2010-12-05 2 views
0

depuis im nouveau ici en php et ne sais pas beaucoup, mon problème est que je vérifie chaque syntaxe sur mon code et toujours je reçois cette erreur "mot de passe didnt match" même si l'ancien mot de passe dans la base de données est correspondre dans mon ancien champ de mot de passe .. j'espère que vous pouvez m'aider, et désolé pour mon mauvais format im encore un débutant ..PHP mise à jour utilisateur - erreur "mot de passe n'a pas correspondre"

voici mon code.

<?php 


$submit = strip_tags($_POST['submit']); 

$username = strtolower(strip_tags($_POST['username'])); 


$oldpassword = strip_tags($_POST['oldpassword']); 

$newpassword = strip_tags($_POST['newpassword']); 

$firstname = strip_tags($_POST['first']); 

$lastname = strip_tags($_POST['last']); 

$gender = strip_tags($_POST['gender']); 

$address = strip_tags($_POST['address']); 

$zipcode = strip_tags($_POST['zip']); 

$contact = strip_tags($_POST['con']); 

$email = strip_tags($_POST['mail']); 

error_reporting(0); 



if($submit) 
{ 

if($username&& $oldpassword && $newpassword && $firstname && $lastname && $address && $zipcode && $contact && $email) 
{ 

$connect = mysql_connect("localhost","root","") or die(mysql_error()); 
mysql_select_db("brightlights") or die(mysql_error()); 

$updatecheck = mysql_query("SELECT * FROM tb_user WHERE username='$username'"); 
$count = mysql_num_rows($updatecheck); 
if($count<=1) 
{ 

if($password==($oldpassword)) 
{ 

mysql_query("UPDATE tb_user SET 
       username = '$username', 
       password = '$newpassword', 
       Firstname = '$firstname', 
       Lastname = '$lastname', 
       gender = '$gender', 
       address = '$address', 
       zipcode = '$zipcode', 
       contact = '$contact', 
       email = '$email' 
       WHERE username='".$_SESSION['username']."'"); 
       $_SESSION['username'] = $username; 
       $_SESSION['password'] = $newpassword; 
       $_SESSION['Firstname'] = $firstname; 
       $_SESSION['Lastname'] = $lastname; 
       $_SESSION['gender'] = $gender; 
       $_SESSION['address'] = $address; 
       $_SESSION['zipcode'] = $zipcode; 
       $_SESSION['contact'] = $contact; 
       $_SESSION['email'] = $email; 
       session_write_close(); 
       echo "Succesfully Updated!"; 

      }else 
       echo "Password not match!"; 
     }else 
      echo "Username already Taken!"; 
    }else 
     echo "Please fill up all form!"; 



}   
?> 
+0

Aussi je crois qu'il devrait y avoir un espace entre $ username && $ oldpassword? – Elliott

+0

je l'ai déjà fait et son erreur encore obtenir ce message .. – emjhay

+0

@ Elliot pourquoi voudriez-vous utiliser ===? Si == ne fonctionne pas === ne va certainement pas travailler – PeeHaa

Répondre

1

Au lieu de récupérer l'ancien mot de passe via la requête, récupérez-le dans la base de données.

$query = mysql_query("SELECT password FROM tb_user WHERE username='$username' LIMIT 1"); 
$count = mysql_num_rows($query); 

if($count==1) 
{ 
    $result = mysql_fetch_assoc($query); 
    if($newpassword==$result["password"]) 
    { 
...... 

En note. Toujours hacher les mots de passe en les persistant/en les comparant. Cet article décrit la majeure partie:

http://phpsec.org/articles/2005/password-hashing.html

+0

c'est le message d'erreur Remarque: Indéfini index: mot de passe dans C: \ xampp \ htdocs \ FO \ account.php sur la ligne 101 Le mot de passe ne correspond pas! – emjhay

+0

Utilisez-vous ce que j'ai écrit? Si vous sélectionnez avec succès 1 ligne (en utilisant le SQL fourni), vous ne devriez pas avoir ce problème. Sinon, imprimez le contenu de $ result. ex: var_dump ($ result); –

+0

oui je l'utilise mais il obtient maintenant le nom d'utilisateur déjà pris le message .. – emjhay

0

imprimer Juste à la fois et le mot de passe ancienmotdepasse et vérifier le contenu:

print($password); 
print($oldpassword); 

if($password==($oldpassword)) 

Pourquoi avez-vous encapsulez l'ancien mot de passe?

+0

vous n'avez pas eu mes problèmes correctement laissez-moi poster un autre désolé pour ma mauvaise formation – emjhay

0

Utilisez

if($newpassword==$oldpassword) 

de de installent

if($password==($oldpassword)) 

Je pense que votre problème sera résolu. et essayez d'obtenir oldpass à partir de la base de données.

Questions connexes