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 :
Plutot que
Code : Sélectionner tout - Visualiser dans une fenêtre à part $mail=mysql_real_escape_string($_POST['email']);
Ce pour éviter les injections SQL douteuses
Code : Sélectionner tout - Visualiser dans une fenêtre à part $mail=($_POST['email']);
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
Partager