Доброе утро всем я новичок здесь, так что голые со мной, пожалуйста ...Пароль не обновляется в базе данных
Я создал функцию, называемую 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
вот что он выглядит, когда вы нажмете на ссылку, приведенные в письме
Спасибо за ваш ответ Я пробовал это, но получаю тот же результат – Phpfreak
Ошибки очевидны, вы отправляете форму через сообщение и запрашиваете параметры GET. Вы должны изменить две строки: Php echo $ _GET ['email']; 'с' Php echo isset ($ _ GET ['email'])? $ _GET ['email']: ''; 'Это должно позаботиться об ошибках, но на это не влияет не-сохранение. –
Я внес изменения в код, поскольку вы предложили, как бы форма, как представляется, не функционировала, не обновляет пароль или не отображает set_message («ваш пароль обновлен»); или перенаправить – Phpfreak