2011-11-10 3 views
0
<? 
// Inialize session 
session_start(); 

// Check, if username session is NOT set then this page will jump to login page 

if (!isset($_SESSION['username'])) 
{ 
header('Location: AdminLogin.php'); 
} 
?> 

<html lang="en-GB" xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<link rel="stylesheet" href="AdminLogin.css" type="text/css" /> 
<title>Welcome to ASM Services Inc.</title> 

<script type="text/javascript" language=JavaScript> 
var message=""; 
function clickIE() 
{ 
    if (document.all) 
    {(message);return false;}} 
function clickNS(e) {if 
(document.layers||(document.getElementById&&!document.all)) { 
if (e.which==2||e.which==3) {(message);return false;}}} 
if (document.layers) 
{document.captureEvents(Event.MOUSEDOWN);document.onmousedown=clickNS;} 
else{document.onmouseup=clickNS;document.oncontextmenu=clickIE;} 

document.oncontextmenu=new Function("return false") 
</script> 
</head> 
<body> 

<div class="login"> 
<?php 
require("adminconfig.inc"); 
$user = $_SESSION['username']; 
echo "<form name=form1 method=post> 
<table width=100 border=0 align=center> 
<tr> 
<font size=5 face=Arial color=yellow>Change Password</font> 
</tr> 
<table> 
    <tr> 
     <td><font size=4 face=Tahoma color=yellow>Username:</font></td> 
     <td><input type=text name='username1' value='$user' size=20 AUTOCOMPLETE = off ></td> 
    </tr> 
    <tr> 
     <td><font size=4 face=Tahoma color=yellow>Password:</font></td> 
     <td><input type=password name=password size=20 AUTOCOMPLETE = off></td> 
    </tr> 
    <tr> 
     <td><font size=4 face=Tahoma color=yellow>New Password</font></td> 
     <td><input type=password name=new_pass size=20 AUTOCOMPLETE = off></td> 
    </tr> 
    <tr> 
     <td><font size=4 face=Tahoma color=yellow>Confirm Password:</font>:</td> 
     <td><input type=password name=con_pass size=20 AUTOCOMPLETE = off></td> 
    </tr> 
</table> 
<table> 
    <tr> 
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     <input type=submit value=Ok name='btnCheck'> 
     &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 
     <input type=submit value=Cancel name=btnCancel onClick='this.form.reset()'> 
    </tr> 
</table> 
</table> 
</form>"; 
?> 

<?php 
require("adminconfig.inc"); 
$user = $_POST['username1']; 
$pass = $_POST['password']; 
$new_pass = trim($_POST['new_pass']); 
$con_pass = trim($_POST['con_pass']); 
if(isset($_POST['btnCheck'])) 
{ 
// Retrieve username and password from database according to user's input 
$login = mysql_query("SELECT Log_User, Log_Pass, User_Type FROM LOG_IN WHERE 
(Log_User = '" . mysql_real_escape_string($_POST['username1']) . "') 
and 
(Log_Pass = '" . mysql_real_escape_string($_POST['password']) . "') 
and 
(User_Type = 'member')") 
or die('Query failed: ' . mysql_error() . "<br />\n$sql"); ; 


//Check username and password match 
if (mysql_num_rows($login) == 1) 
{ 
    if(trim('$new_pass') == trim('$con_pass')) 
    { 
     $sql=mysql_query("UPDATE log_in SET Log_Pass='$new_pass' where username='$user'"); 
     if(!$sql) 
     { 
      echo "fail updating!"; 
     } 
     else 
     { 
      echo "success!"; 
      echo "<script type = text/javascript>"; 
      echo "alert('The new password has been changed successfully.');"; 
      echo "</script>"; 
     } 
    } 
    else 
    { 
     echo "fail!"; 
     echo "<script type = text/javascript>"; 
     echo "alert('Error. New Password and Confirm Password are not the same. Please make it sure that they are the same.');"; 
     echo "</script>"; 
    } 
} 
} 
?> 

</div> 

<div class="copyright"> 
&copy; Copyright 2011 <strong>ASM Services Inc.</strong> 
</div> 
</body> 
</html> 

Ceci est mon code complet pour changer le mot de passe de l'utilisateur. Je ne sais vraiment pas quelle est l'erreur exacte de mon code. Chaque fois que je change le mot de passe, cela amène toujours à l'erreur "Nouveau mot de passe et confirmation du mot de passe ne sont pas les mêmes".Quel est le problème avec mon mot de passe changer php ???

+0

c'est en effet une question "trop ​​localisée" –

+1

Vous stockez le mot de passe en texte clair ** **; c'est la seule chose * la plus fausse dans votre code. Voir: http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords – Piskvor

+0

Je ne dirai pas que c'est * la plus * mauvaise chose. Personnellement, cela ne me dérange pas si mon mot de passe a été stocké en texte brut. Pour m'inscrire sur un site boiteux, j'utiliserais le mailinator et je ne ferais pas attention à sa sécurité. –

Répondre

3

Votre code actuel a:

if(trim('$new_pass') == trim('$con_pass')) { 
    // passwords match 
} else { 
    // passwords don't match 
} 

Vous comparez les chaînes '$new_pass' & '$con_pass' et non les variables $new_pass & $con_pass. N'utilisez pas non plus trim car l'utilisateur pourrait avoir de l'espace dans ses mots de passe.

changement

if(trim('$new_pass') == trim('$con_pass')) 

à

if($new_pass == $con_pass) 

Aussi, vous lisez les mots de passe de la forme que:

$new_pass = trim($_POST['new_pass']); 
$con_pass = trim($_POST['con_pass']); 

Vous ne devriez pas utiliser trim ici. Si l'utilisateur veut avoir de l'espace à la fin/au début de son mot de passe, votre logique échouera car l'utilisateur pense que son mot de passe a l'espace mais le mot de passe que vous entrez dans la BD n'aura pas d'espace.

+0

merci de me le rappeler .. quand j'ai changé mes codes, alors la prochaine erreur que je reçois est "fail update" .. que pensez vous de mon erreur ?? merci encore –

+0

@Kevzz Il doit y avoir quelque chose de mal avec votre SQL. Essayez de voir l'erreur en faisant un var_dump (mysql_error()); après l'écho "échec de la mise à jour"; – Jeune

+0

@Jeune, merci de me donner ce code .. Je connaissais l'erreur de mon code .. Et son fonctionnement maintenant ..: D Merci beaucoup Que Dieu vous bénisse: D –

-1

changement

if(trim('$new_pass') == trim('$con_pass')) 

à

if(trim($new_pass) == trim($con_pass)) 
+0

-1 codaddict déjà [dit que] (http://stackoverflow.com/questions/8075820/what-wrong-with-my-php-change-password-pls-help/8075842#8075842) – yannis