Bonjour à tous,

J'ai programmé un petit script qui permet à un utilisateur de mon site ayant perdu son mot de passe de connection de pouvoir le récupérer en tapant simplement son adresse email.

Le script vérifie d'abord que le cryptogramme visuel correspond (pour éviter le brute force ou les bots), puis que le email entré figure bien dans la base de données, et seulement ensuite il envoit le mot de passe par email.

Il y a 2 pages : le formulaire d'un coté, et la page contenant le script de l'autre.

Voici le début du script de traitement.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
include "crypt/functions.php";
 
//Vérification de la validation du formulaire + remplissage du champs email
 
// Si le code généré est le même que celui qu'on a donné...
if (chk_crypt($_POST['code']))
{
 
if (isset($_POST['email']) && !empty($_POST['email'])) 
{
//Conditions remplies, connexion à la BDD
$mail=($_POST['email']);
mysql_connect("localhost", "XXXXX", "XXXXX"); // Connexion à MySQL
mysql_select_db("XXXXXX"); // Sélection de la base 
 
// Requête sur la BDD = table membre
$requete_membres = "SELECT ID, prenom, nom, email FROM tablemembre WHERE email='$mail'";
$membres = mysql_query($requete_membres) or exit(mysql_error());
$nb = mysql_num_rows($membres);

On m'a rapidement conseillé d'utiliser :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$mail=mysql_real_escape_string($_POST['email']);
Plutot que
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$mail=($_POST['email']);
Ce pour éviter les injections SQL douteuses

Mon script avec $mail=($_POST['email']); marche parfaitement. Des que j'utilise l'instruction mysql_real_escape_string j'ai droit à l'erreur suivante :


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'nobody'@'localhost' (using password: NO) in /home/XXXXX/public_html/connexion.php on line 13
 
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in /home/XXXXX/public_html/connexion.php on line 13
 
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'root'@'localhost' (using password: NO) in /home/XXXXX/public_html/connexion.php on line 14
 
Warning: mysql_select_db() [function.mysql-select-db]: Access denied for user 'nobody'@'localhost' (using password: NO) in /home/XXXXX/public_html/connexion.php on line 15
 
Warning: mysql_select_db() [function.mysql-select-db]: A link to the server could not be established in /home/XXXXX/public_html/connexion.php on line 15
 
Warning: mysql_query() [function.mysql-query]: Access denied for user 'nobody'@'localhost' (using password: NO) in /home/XXXXX/public_html/connexion.php on line 20
 
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /home/XXXXX/public_html/connexion.php on line 20
Access denied for user 'nobody'@'localhost' (using password: NO)

Quelqu'un a t il une idée du problème ? Est ce que je fais une mauvaise utilisation de l'instruction mysql_real_escape ?

Est il possible de donner des droits à l'user nobody ?

J'avoue être un peu perdu sur le coup.

Cordialement,
Philippe