#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