Я пытаюсь создать страницу изменения пароля, но я не знаю, как получить идентификатор пользователя (адрес электронной почты), чтобы завершить изменение.
здесь моя страница пароля изменения,
<form name="Change Password" class="form-horizontal" method="post" action="adminHandleChangePassword.php">
<div class="form-group">
<label for="InputPassword2">New Password</label>
<input type="password" class="form-control" placeholder="New Password" name="newPassword">
<label for="InputPassword3">Confirm New Password</label>
<input type="password" class="form-control" placeholder="Confirm Password" name="confirmPassword">
</div>
<input type="submit" value="Change Password" class="btn btn-primary">
</form>
И это моя страница adminHandleChangePassword.php,
<?php
session_start();
require 'dbfunction.php';
$con = getDbConnect();
$password1 = mysqli_real_escape_string($con, $_POST['newPassword']);
$password2 = mysqli_real_escape_string($con, $_POST['confirmPassword']);
$user = mysqli_real_escape_string($con, $_SESSION['email']);
if ($password1 != $password2) { echo "Your passwords do not match.";}
else if (mysqli_query($con, "UPDATE adminaccount (email,password) VALUES ('$user', AES_ENCRYPT('$password1','tw8520'))"))
{echo "You have successfully changed your password.";}
else { mysqli_error($con); }
mysqli_close($con);
?>
данные базы данных,
сделайте это первым. форма имени пользователя должна иметь значение, чтобы пользователь мог увидеть свое прежнее имя пользователя. надеюсь это поможет. Не стесняйтесь задавать вопросы:
$query=mysql_query("SELECT * FROM adminaccount WHERE email={$_SESSION['email']}");
if($fetch=mysql_fetch_assoc($query)){
echo " <input type='email' class='form-control' value='".$fetch['email']."' name='email'> ";
}
Я изменил некоторые части кода, и он сработал,
if ($password1 != $password2) { echo "Your passwords do not match.";}
if (mysqli_connect_errno($con)) {
echo "Failed to connect to MySQL: " . mysqli_connect_error();
} else {
mysqli_query($con, "UPDATE adminaccount SET password = AES_ENCRYPT('$password1','st2220') WHERE email = '$user'");
if (mysqli_affected_rows($con) > 0) {
echo "You have successfully changed your password.";
} else {
echo "NO record updated.";
}
mysqli_close($con);
}
Если у вас есть электронная почта пользователя в вашей базе данных, вам не нужен идентификатор пользователя. По-моему, письмо уникально или, возможно, у вас есть user_id, хранящийся в $ _SESSION.
WHERE
в своеUPDATE
.UPDATE adminaccount SET email = 'y', password = 'z' WHERE email = 'x'
. В настоящий момент ваш запрос сбрасывает столбцы электронной почты и пароля всех строк в этой таблице, вероятно, не так, как вы хотите.