2013-02-20 2 views
-1

나는 사용자가 계정을 만들 수있는 간단한 스크립트 작업을하고 있습니다. 그것에 특별한 것은 없으며, 사용자 이름과 암호를 묻습니다. 유일한 문제는 사용자가 암호를 변경할 수있는 스크립트를 만드는 것입니다. 여기에 내 진전이있다.비밀번호 변경 PHP

"현재 암호가 맞지 않습니다!"라는 메시지가 나타나는데 암호가 맞아도 마찬가지입니다. 이미 동일한 페이지에 다른 코드로 데이터베이스에 연결했습니다.

changePass.html :

<?php 
    $CurrentPassword = mysql_real_escape_string(strip_tags(stripslashes($_POST['CurrentPassword']))); 
    $NewPassword = mysql_real_escape_string(strip_tags(stripslashes($_POST['NewPassword']))); 
    $ConfirmNewPassword = mysql_real_escape_string(strip_tags(stripslashes($_POST['ConfirmNewPassword']))); 
    $Submit2  = mysql_real_escape_string(strip_tags(stripslashes($_POST['Submit2']))); 
?> 
<?php 
    if ($Submit2) { 
     $_OLDHASH = hash('sha512',''.$CurrentPassword.''); 
     $_NEWHASH = hash('sha512',''.$NewPassword.''); 
     $_CONFIRMNEWHASH = hash('sha512',''.$ConfirmNewPassword.''); 

     if ($myU->Password == $_OLDHASH) { 
      if ($_NEWHASH == $_CONFIRMNEWHASH) { 
       mysql_query("UPDATE Password='".$_NEWHASH."' WHERE Username='".$User."'"); 
       session_destroy(); 
       header("Location: index.php"); 
      } 
      else { 
       echo "Your new password and new confirm password does not match!"; 
      } 
     } 
     else { 
      echo "Your current password is not right!"; 
     } 
    } 
?> 


<form action='' method='POST'> 
<br /> 
Update Password 
<br /> 
<input placeholder='Current Password' type='password' name='CurrentPassword'> 
<br /> 
<input placeholder='New Password' type='password' name='NewPassword'> 
<br /> 
<input placeholder='Confirm New Password' type='password' name='ConfirmNewPassword'> 
<br /> 
<input type='submit' value='Change' name='Submit2'><br /> 
</form> 
+10

그럼 실제 질문은 무엇입니까? 작동하지 않는 것은 무엇입니까? –

+0

글쎄, 그 단지 잘못된 암호를 말하고, 비록 유효한 암호. 내 생각 엔 데이터베이스에 연결하는 데 오류가 있지만 데이터베이스 구성이 좋지 않습니다. – user2092939

+1

여기에 '잘못된 비밀번호'가 인쇄되어 있지 않으므로 처음에는 그 코드를 찾아야합니다. – ceejayoz

답변

2

시도가 두 개의 파일 만드는

<form action='changePass.php' method='POST'> 
<br /> 
Update Password 
<br /> 
<input placeholder='Current Password' type='password' name='CurrentPassword'> 
<br /> 
<input placeholder='New Password' type='password' name='NewPassword'> 
<br /> 
<input placeholder='Confirm New Password' type='password' name='ConfirmNewPassword'> 
<br /> 
<input type='submit' value='Change' name='Submit2'><br /> 
</form> 

을하고 두 번째 copyPass.php :

<?php 
// Copy your php code here 
?> 

따라서, 사용자가 패스를 변경하고자 할 때, 그에게 changePass.html을 가리키고, 그가 폼에 들어 오면, 데이터는 전송되고 Pase.php로 변경됩니다. 양식 태그/작업 매개 변수에는 데이터를 처리 할 웹 페이지로 changePass.php가 추가되어 있습니다. '$ _ NEWHASH.. "= UPDATE passwordTableSET 암호" "'WHERE 이름 = '"$ 사용자를

는 mysql_query (:.

지금 나는 또한 당신이 뭔가를 작성해야 당신의 SQL 쿼리에 잘못된 구문을 발견했습니다. " '");

4

로그인 할 때 비밀번호를 확인하면이 외의 모든 일을 저지르는 것입니까?

mysql_real_escape_string(strip_tags(stripslashes())) 

특수 문자가 포함 된 암호에 문제가있는 것을 볼 수 있기 때문에 강력한 암호입니다. 내 충고는 전혀하지 않는 것입니다. 쿼리에 입력하기 전에 입력을 해싱하고 있으므로이 특정 필드에 SQL 주입 기회가 없습니다.

다른 것을 잘못된 :

  1. ''.$NewPassword.'' 단순히 $NewPassword
  2. 왜 동등하다?

    ?> 
    <?php 
    

    이 출력됩니다 당신의 header() 전화를 깰 것입니다 원시 줄 바꿈.