Member 13965471 Ответов: 0

Как получить значение токена из URL-адреса


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

1.пользователь нажимает кнопку "Забыли пароль".
2.Тип пользователя имя пользователя и адрес электронной почты
3.пользователь получил электронное письмо
4.пользователь нажимает ссылку в Почте
5.пользователь переходит на новую страницу и вводит новый пароль

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


<?php 

if (isset($_POST['submit_pass'])) {
  $new_pass = mysqli_real_escape_string($db, $_POST['new_pass']);
  $new_pass_c = mysqli_real_escape_string($db, $_POST['new_pass_c']);


   $token =$_SESSION['token']);
    if (empty($new_pass) || empty($new_pass_c)) {array_push($errors, "Password is required");}
  if ($new_pass !== $new_pass_c) {array_push($errors, "Password do not match");}
  if (count($errors) == 0) {
  
    $sql = "SELECT * FROM password_resets WHERE token='$token' LIMIT 1";
    $results = mysqli_query($db, $sql) or trigger_error( "Query Failed!". mysqli_error($db));
    $email = mysqli_fetch_assoc($results)['username'];

    if ($email) {
      $new_pass = md5($new_pass);
      $sql = "UPDATE tutor SET password='$new_pass' WHERE tutor_username='$email'";
      $results = mysqli_query($db, $sql) or trigger_error( "Query Failed!". mysqli_error($db));
      header('location: ../st_login.php');
    }
  }

}
?>


Что я уже пробовал:

я пытался измениться.
$_SESSION
вместо
$_GET
или
$_REQUEST

Richard Deeming

Вы действительно не должны все еще использовать MD5 для хранения паролей. Это не было безопасно в течение довольно долгого времени.

PHP имеет встроенные методы, которые дадут вам более безопасный хэш:
PHP: password_hash[^]
РНР: функцию password_verify[^]

(Хотя рад видеть кого-то, кто не хранит пароли в обычном тексте. :) )

0 Ответов