Как получить идентификатор пользователя для завершения смены пароля?

0

Я пытаюсь создать страницу изменения пароля, но я не знаю, как получить идентификатор пользователя (адрес электронной почты), чтобы завершить изменение.

здесь моя страница пароля изменения,

<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);

?>

данные базы данных,

  • 0
    Вы можете добавить предложение WHERE в свое UPDATE . UPDATE adminaccount SET email = 'y', password = 'z' WHERE email = 'x' . В настоящий момент ваш запрос сбрасывает столбцы электронной почты и пароля всех строк в этой таблице, вероятно, не так, как вы хотите.
  • 0
    я изменил инструкцию на else if (mysqli_query ($ con, "UPDATE adminaccount SET password = 'AES_ENCRYPT (' $ password1 ',' st2220 ')' WHERE email = $ user")), но он не обновил базу данных
Показать ещё 2 комментария
Теги:
database
mysqli

3 ответа

1

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

$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'> ";
}
0

Я изменил некоторые части кода, и он сработал,

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);
}
0

Если у вас есть электронная почта пользователя в вашей базе данных, вам не нужен идентификатор пользователя. По-моему, письмо уникально или, возможно, у вас есть user_id, хранящийся в $ _SESSION.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню