2015-12-28 3 views
0

Доброе утро всем я новичок здесь, так что голые со мной, пожалуйста ...Пароль не обновляется в базе данных

Я создал функцию, называемую password_reset

моя страница recover_password отлично работает и отправляет электронную почту и обновляет поле называется validation_code как я ожидаю его ...

теперь, когда я получаю письмо, он посылает эту ссылку

для восстановления пароля, пожалуйста, посетите http://localhost/cms/account/reset-password.php?email=myemail.net&code=313893625577

теперь у меня есть страница называется reset-password.php, как вы видите в ссылке

при нажатии на него переходит к странице идеально

мой HTML

<?php display_message();?> 
<?php password_reset();?> 

<form role="form" action="reset-password.php" method="post"> 
    <div class="form-group"> 
     <label>Verification Code</label> 
     <input class="form-control" type="text" id="verification_code" name="verification_code" value="<?php echo isset($_GET['code']) ? $_GET['code'] : '';?>"> 
    </div> 
    <div class="form-group"> 
     <label>Email Address</label> 
     <input class="form-control" type="text" id="email" name="email" value="<?php echo isset($_GET['email']) ? $_GET['email'] : '';?>"> 
    </div> 
    <div class="form-group"> 
     <label>Password</label> 
     <input class="form-control" type="text" id="password" name="password" placeholder="Password"> 
    </div> 
    <div class="form-group"> 
     <label>Confirm New Password</label> 
     <input class="form-control" type="text" id="confirm_password" name="confirm_password" placeholder="Confirm Password"> 
    </div> 
    <input type="submit" name="submit" id="btn-login" class="btn btn-custom btn-lg btn-block" value="Reset Password"> 
    <input type="hidden" class="hide" name="token" id="token" value="<?php echo token_generator();?>"> 

    </form> 

Я использовал

value="<?php echo isset($_GET['code']) ? $_GET['code'] : '';?>"> 
value="<?php echo isset($_GET['email']) ? $_GET['email'] : '';?>"> 

, чтобы вытащить значения из URL и поместить в поля ... проблема в том, что это не будет обновлять пароли при вводе новых паролей

У меня есть 4 поля на странице сброса

код проверки электронной почты пароль confirm_password

теперь, когда я ставлю пароли в я нажимаю отправьте его, он не обновляет пароль.

function password_reset() 
{ 
    if (isset($_COOKIE['temp_access_code'])) { 

     if (isset($_POST['email']) && isset($_POST['code'])) { 

      if (isset($_SESSION['token']) && isset($_POST['token'])) { 

       if ($_POST['token'] === $_SESSION['token']) { 

        if ($_POST['password'] === $_POST['confirm_password']) { 

         $updated_password = password_hash($_POST['password']); 

         $sql = "UPDATE users SET user_pwd = '" . escape($updated_password) . "', validation_code = 0 WHERE user_email = '" . escape($_GET['email']) . "'"; 
         query($sql); 

         set_message("your password was updated"); 

       } 
      } 
     } 
    } 
    } else { 

     set_message("Sorry your time has expired"); 
     redirect("../account/request-password-reset.php"); 
    } 
}// End Function 

вот что он выглядит, когда вы нажмете на ссылку, приведенные в письме

enter image description here

ответ

3

В функции password_reset() вы используете чек

if (isset($_GET['email']) && isset($_GET['code'])) {

но это никогда не будет так, потому что вы отправляете форму с почтой, поэтому вам нужно проверить

if (isset($_POST['email']) && isset($_POST['code'])) { 

, чтобы получить дополнительную информацию о вашей функции.

+0

Спасибо за ваш ответ Я пробовал это, но получаю тот же результат – Phpfreak

+0

Ошибки очевидны, вы отправляете форму через сообщение и запрашиваете параметры GET. Вы должны изменить две строки:

+0

Я внес изменения в код, поскольку вы предложили, как бы форма, как представляется, не функционировала, не обновляет пароль или не отображает set_message («ваш пароль обновлен»); или перенаправить – Phpfreak

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