У меня есть две таблицы с именем «members» и «password_reset». У меня есть форма (request-password.php), где пользователи могут сбросить свой пароль, заполнив их электронную почту. Когда они заполняют форму, ссылка на токен отправляется на адрес электронной почты пользователя. Токены хранятся в таблице «password_reset», а все пользователи в таблице «члены»Проверить действительный токен, чтобы обновить пароль
Когда пользователь нажимает на ссылку в письме, он будет перенаправлен на страницу reset-password.php, где он чтобы ввести новый пароль и подтвердить его, заполнив его снова. После нажатия кнопки «Отправить» страница будет перенаправлена на update-password.php. Это страница с кодом для обновления нового пароля в базе данных. Однако, прежде чем страница сможет обновить базу данных, она должна проверить, введен ли пользователь пароль, который равен подтвердителю. Также верно ли письмо и назначенный токен. Если введенные пароли равны, а токен - excist, он должен обновить запись пользователя этого конкретного пользователя.
Мои вопросы: Как получить файл update-password.php, чтобы проверить, действительно ли электронная почта и назначенный токен действительны, так что пользовательский указатель пользователя с этим письмом может быть обновлен? Электронная почта хранится в таблице 'members' и токене в 'password_reset'. Я понятия не имею, как их связать.
Это мой сброс-password.php файл
if (isset($_GET['token'])) {
$uniqid = htmlentities($_GET['token']);
$result = mysqli_query($mysqli,"SELECT * FROM password_reset WHERE token = '".$uniqid."' ");
if (mysqli_num_rows($result) > 0) {
$row = mysqli_fetch_array($result);
//Check Geldigheid token
$geldig = 7200;
if (time()- intval($row['tstamp']) > $geldig) {
//TOKEN HAS EXPIRED AND SUBMIT BUTTON HAS BEEN DISABLED
echo "
<!DOCTYPE html>
<html>
<head>
<title>Wachtwoord Resetten</title>
<link rel='stylesheet' href='../../css/reset-wachtwoord.css' />
<script type='text/JavaScript' src='../../js/sha512.js'></script>
<script type='text/JavaScript' src='../../js/forms.js'></script>
</head>
<body>
<div id='container'>
<div class='logo'></div>
<div class='ww-vergeten-form'>
<form action='' method=''>
<input type='password' name='password' id='password' placeholder='Nieuw Wachtwoord' size='50' maxlength='0'>
<input type='password' name='confirmpwd' id='password' placeholder='Herhaal Wachtwoord' size='50' maxlength='0'>
<input type='submit' class='reset-btn disabled' name='' value='Reset Wachtwoord' disabled></p>
</form>
<p class='error'>Sessie Verlopen. <a href='index.php'>Vraag een nieuwe aan</a>.</p>
</div>
</div>
</body>
</html>
";
} else {
//TOKEN IS STILL VALID
echo "
<!DOCTYPE html>
<html>
<head>
<title>Wachtwoord Resetten</title>
<link rel='stylesheet' href='../../css/reset-wachtwoord.css' />
<script type='text/JavaScript' src='../../js/sha512.js'></script>
<script type='text/JavaScript' src='../../js/forms.js'></script>
</head>
<body>
<div id='container'>
<div class='logo'></div>
<div class='ww-vergeten-form'>
<form action='password-changed.php' method='post'>
<input type='password' name='password' id='password' placeholder='Nieuw Wachtwoord' size='50' maxlength='255'>
<input type='password' name='confirmpwd' id='password' placeholder='Herhaal Wachtwoord' size='50' maxlength='255'>
<input type='submit' class='reset-btn' name='update' value='Reset Wachtwoord'></p>
</form>
<p class='nieuw-account'>Nog geen account? <a href='../../'>Maak er een aan</a>!</p>
</div>
</div>
</body>
</html>
";
}
}else{
echo "<p class='error'>Token incorrect</p>";
}
}
UPDATEEEEEEEEEEE! * @Chancho * - Хорошо, я обновил свой URL в посыле-email.php на:
$url = "DOMAIN.COM/reset-password/reset.php?email=".$email."#token=".$uniqid;
Теперь URL не открывая веб-страницы, потому что мне нужно, чтобы получить $ электронной почты, но так как он находится в другой таблице, чем токен, как мне его получить?
Нечто подобное ?:
if (isset($_GET['token'])) {
$uniqid = htmlentities($_GET['token']);
$email = htmlentities($_GET['email']);
$result = mysqli_query($mysqli,"SELECT * FROM password_reset WHERE token = '".$uniqid."' ");
$result2 = mysqli_query($mysqli,"SELECT * FROM members WHERE email = '".$email."' ");
if (mysqli_num_rows($result) > 0) {
$row = mysqli_fetch_array($result,$result2);
}
}
Покажите нам, что у вас есть для update-password.php, это действительно то, что нужно сделать. –
* «Я не могу заставить последнюю часть работать» * - И это 'part' нам нужно увидеть' update-password.php', ваша форма рядом с избыточным. '$ part =" update-password.php ";' –
Единственное, что я могу найти до сих пор, это то, что я думаю, что ваш токен может быть интерпретирован как строка вместо целого, что может быть или не быть желаемым результатом , Дайте этому try 'token = '$ uniqid'' вместо' token =' ". $ Uniqid." 'Также попробуйте закрыть это с помощью полуколонии 'value =' Php echo $ uniqid; ?> '' –