Как я могу повторно войти на свой веб-сайт с помощью файла cookie при повторном открытии браузера?

#php #authentication #session #logging #cookies

#php #аутентификация #сессия #ведение журнала #файлы cookie

Вопрос:

Вот мой сценарий входа в систему:

      <?php
if (isset($_POST["email"]) AND isset($_POST["pass"])) {
  $email=trim($_POST["email"]);
  $pass=trim($_POST["pass"]);

  require_once 'dbh.php';
  require_once 'functions.php';

  if (emptyInputLogin($email, $pass) !== false) {
    header ("location: login_page.php?error=emptyinput");
    exit();
  }

  loginUser($conn, $email, $pass);
}
else {
  header("location: login_page.php");
  exit();
}
?>
 

А вот и функция LoginUser.
Когда пользователь распознан, он создает новый сеанс и устанавливает файл cookie с идентификатором сеанса:

 function loginUser($conn, $email, $pass){
  $emailExists = emailExists($conn, $email);

  if ($emailExists === false) {
    header("location: login_page.php?error=emailnotexists");
    exit();
  }

  $pwdHashed = $emailExists["usersPwd"];
  $checkPass = password_verify($pass, $pwdHashed);

  if ($checkPass === false) {
    header("location: login_page.php?error=wrongpass");
    exit();
  }
  else if ($checkPass === true) {
    session_start();
    $_SESSION["userEmail"] = $emailExists["usersEmail"];
    setcookie("sessionID", session_id(), time() 3600); //expire in 1 hour

    header("location: index.php");
  }
}
 

Наконец, мой php-код в примере индексной страницы. Отображение идентификатора сеанса одно и то же.

   <?php
  echo "Session ID: " . session_id() . "<br />Cookie [sessionid]: ". $_COOKIE["sessionID"];
  ?>

 

Я думаю, что сохранение имени пользователя вошедшего в систему пользователя в файле cookie в клиенте, а затем рассмотрение этого вошедшего в систему пользователя в новом сеансе небезопасно, поэтому я подумал о сохранении идентификатора удаленного сеанса локально. Но тогда я не знаю, как я могу получить доступ к данным (пользователь, имя, фамилия) пользователя, подключенного к этому сеансу!
Я знаю, что мой код очень поверхностный.. Как я могу реализовать повторный вход в систему?

Комментарии:

1. emailExists возвращает строку пользователя в базе данных, если есть один пользователь, иначе возвращает false