2014-12-15 4 views
2

Я нашел учебное пособие по восстановлению пароля и попытке реализовать его на моей текущей странице. Когда пользователь нажимает, чтобы изменить свой пароль, он должен ввести свой адрес электронной почты и получить ссылку в свой бокс. Пока это хорошо. Проблема заключается в том, что пользователь устанавливает свой новый пароль. Он не сохраняется в базе данных.Сценарий восстановления пароля не работает

Это reset.php

if(isset($_POST['submit'])) 
{ 
    //basic validation 
    if(strlen($_POST['password']) < 3) 
    { 
     $error[] = 'Password is too short.'; 
    } 
    if(strlen($_POST['passwordConfirm']) < 3) 
    { 
     $error[] = 'Confirm password is too short.'; 
    } 
    if($_POST['password'] != $_POST['passwordConfirm']) 
    { 
     $error[] = 'Passwords do not match.'; 
    } 
    //if no errors have been created carry on 
    if(!isset($error)) 
    { 
     try 
     { 
      $stmt = $pdo->prepare("UPDATE users SET password = :password, resetComplete = 'Yes' WHERE resetToken = :token"); 
      $stmt->execute(array(
      ':password' => sha1($password), 
      ':token' => $row['resetToken'] 
      )); 
      //redirect to index page 
      header('Location: index.php?action=resetAccount'); 
      exit; 
      //else catch the exception and show the error. 
     } 
     catch(PDOException $e) 
     { 
      $error[] = $e->getMessage(); 
     } 
    } 
} 

форме

<form role="form" method="post" action="" autocomplete="off"> 
<h2>Change Password</h2> 
<hr> 
<div class="form-group"> 
<input type="password" name="password" id="password" class="form-control input-lg" placeholder="Password" tabindex="1"> 
</div> 
</div> 
<div class="col-xs-6 col-sm-6 col-md-6"> 
<div class="form-group"> 
<input type="password" name="passwordConfirm" id="passwordConfirm" class="form-control input-lg" placeholder="Confirm Password" tabindex="1"> 
</div> 
</div> 
</div> 
<hr> 
<div class="row"> 
<div class="col-xs-6 col-md-6"><input type="submit" name="submit" value="Change Password" class="btn btn-primary btn-block btn-lg" tabindex="3"></div> 
</div> 
</form> 

Обновляется только resetComplete = 'Yes' пароль не меняется. Поэтому я подозреваю, что это может быть что-то в пароле.

+1

' ': пароль' => sha1 ($ пароль),' - вы устанавливаете '$ password' где угодно? Я не вижу, чтобы вы использовали это, только '$ _POST ['password']'. – slugonamission

ответ

3

В sha1($password) вы пытаетесь получить доступ к новому паролю как к простой переменной. Раньше вы обращались к нему как к переменной post. $_POST['password']

Вы должны добавить это перед ша линии где:

$password = $_POST['password'] 

или доступ к нему, используя этот путь:

sha1($_POST['password']) 
+0

Да, в этом была проблема. Я просто .. Я не знаю, почему я забываю поставить то, что выложено из формы. Благодаря – Goro

Смежные вопросы