2011-11-10 4 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> 

これはユーザーのパスワードを変更するためのコード全体です。私は本当に自分のコードの正確なエラーは何ですか。私はパスワードを変更するたびに、常に「エラー、新しいパスワードとパスワードの確認は同じではありません」と表示されます。私のPHPのパスワードを変更すると何が問題になりますか?

+0

にこれは確かに "あまりにもローカライズされた" 質問 –

+1

あなたは** **平文でパスワードを保存しているです。それはあなたのコードで一番*間違ったものです。参照してください:http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords – Piskvor

+0

私はそれが*ほとんど*間違っているとは言わないでしょう。私のパスワードがプレーンテキストで保存されていれば個人的には気にしません。いくつかの不手際のサイトに登録するには、私はmailinatorを使用し、セキュリティは気にしないでください。 –

答えて

3

あなたの現在のコードはあります

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

あなたは、文字列'$new_pass' & '$con_pass'ない変数$new_pass & $con_passを比較しています。また、ユーザーがパスワードにスペースを持つ可能性があるので、trimを使用しないでください。

if($new_pass == $con_pass) 

変更

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

としても、あなたは、フォームからパスワードを読み取る:あなたがここにもtrimを使用すべきではない

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

。ユーザーがパスワードの最後/最初にスペースを入れたい場合、ユーザーのパスワードにスペースがあると思ってもロジックは失敗しますが、DBに入力するパスワードにはスペースがありません。

+0

私に思い出させてくれてありがとう..私がコードを変更したときに次のエラーが出るのは "失敗更新"です。 ??もう一度ありがとう –

+0

@KevzzあなたのSQLに何か問題があるはずです。 var_dump(mysql_error())を実行してエラーを見てください。エコー "更新失敗"の後。 – Jeune

+0

@Jeune、私にそのコードを教えてくれてありがとう..私は自分のコードのエラーを知っていました..そして、現在働いています:D D: –

-1

変更

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

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

-1 codadaddictはすでに[http: /stackoverflow.com/questions/8075820/what-wrong-with-my-php-change-password-pls-help/8075842#8075842) – yannis

関連する問題