Modification de mot de passe

Résolu
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008 - 10 avril 2006 à 12:29
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008 - 10 avril 2006 à 19:20
bonjour, g un pb avec mon script de modification de mot de passe et je ne parviens pas a trouver le pb
le mesage d'erreur est le suivant:
Erreur SQL !
Champ 'gabs' inconnu dans where clause
g mis en rouge l endroit ki pour moi pose pb
dans config.php il y a le script de connexion BDD avec les variables associées a chacune des tables
gabs est le login ki se situe dans la BDD, il est donc bien existant

<?
include('../config.php');
$login = strtolower($_POST['login']);//force les caractères en minuscule
$mdp = $_POST['password'];
$mdp3 = $_POST['password3'];
// Sélection du login correspond au mot de passe entré par le visiteur
$verif = "SELECT * FROM $table_pers WHERE LCASE($table_pers.login)=$login AND mdp=$mdp";
// On exécute et on gère l'erreur
$ok = mysql_query($verif) or die('Erreur SQL !
'.mysql_error());
// Si le login et mot de passe ne correspondent pas
if(!mysql_num_rows($ok)) {

echo '<center>

Erreur dans la saisie du login et/ou du mot de passe ! ';
echo '

[javascript:history.go(-1) Retour]</center>';
// On arrête le chargement de la page
exit();
} else {
// Requête de "modification"
$modif = "UPDATE $table_pers SET mdp=$mdp3 WHERE login=$login AND mdp=$mdp";
// Exécution de la requête et gestion de l'erreur
mysql_query($modif) or die ('Erreur ! Impossible de modifier votre mot de passe !

'.mysql_error());
// Petit message...
echo '<center>

Votre nouveau mot de passe : '.$mdp3.'';
// Ici affichage d'un lien de votre choix, donc à modifier !!!
echo '

Votre page</center>';
// On arrête le chargement de la page
exit();
}


?>

6 réponses

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 avril 2006 à 14:22
Salut,

si ton champ est de type VARCHAR (sans BINARY) inutile de mettre le LOWER car VARCHAR est insensible à la casse.

ça donnerait ça : 'SELECT COUNT(*) FROM ta_table WHERE login "'.$login.'" AND mdp "'.$mdp.'" '

Et attention aux failles de SQL injection avec ça, il faudrait avant de faire ça faire ça :

if(get_magic_quotes_gpc()===0)
{
$mdp = mysql_real_escape_string($_POST['password']); //pour toi FhX
$mdp3 = mysql_real_escape_string($_POST['password3'];
}
else
{
$mdp = $_POST['password'];

$mdp3 = $_POST['password3'];
}

ensuite ta requête, sinon bonjour les failles.

a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
3
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 avril 2006 à 16:02
les magic quotes en gros sont des échappements magiques de caractères, c'est à dire que si c'est activé, tu n'auras pas de failles de sql injection possible dans ton code car les caractères pouvant permettre de type de failles seront échappés, par contre si elles sont désactivées, aie aie aie, bref la fonction get_magic_quotes_gpc() renvoit 0 si elles sont désactivées et 1 dans le cas contraire.

Ensuite mysql_real_escape_string() c'est pour échapper les caractères pouvant créer des failles de sql injection.

a +

<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
3
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
10 avril 2006 à 13:14
"SELECT * FROM $table_pers WHERE LCASE($table_pers.login)=$login AND mdp=$mdp";
'SELECT COUNT(*) FROM ta_table WHERE LOWER(login) "'.$login.'" AND mdp "'.$mdp.'" '

La ca devrait être bon.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
10 avril 2006 à 14:23
Tant qu'on est dans les améliorations sur ce code, remplace <? par <?php, et n'oublie pas les isset() pour vérifier que les variables existent.

Ensuite je viens de voir en fait ta requête, tu as un champ par login ? c'est inutile franchement tu t'y prends mal.
<hr size="2" width="100%"><li>Entraide, dépannage et vulgarisation informatique : Mon site de vulgarisation informatique</li><li>Codes-php.net</li>
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008
10 avril 2006 à 15:48
juste une question
sa sert a koi précisément les 2 fonctions suivantes :
get_magic_quotes_gpc()==0
et
mysql_real_escape_string()
0
gabs77 Messages postés 379 Date d'inscription mardi 6 décembre 2005 Statut Membre Dernière intervention 8 octobre 2008
10 avril 2006 à 19:20
ok merci pour l info
0
Rejoignez-nous