Аутентификация пользователя перед созданием аутентификатора (cookie) ... так что напишите запрос, чтобы вывести идентификатор из таблицы пользователя, где совпадает адрес электронной почты/пароль ... поэтому, только если запрос возвращает идентификатор, тогда вы знаете, что пользователь существует и «аутентифицирован», поэтому теперь вы можете генерировать аутентификацию (cookie), устанавливая его в usrid ...
Однако настройка cookie на USB-накопитель не является хорошей практикой! так как любой пользователь на стороне клиента может легко установить/передать файл cookie с номером в запросе POST ... вам нужно реализовать некоторый механизм шифрования для генерации «сеанса», который затем можно использовать в качестве уникального взломанного идентификатора пользователя ,
Я написал простую функцию шифрования в коде ниже, который вы можете использовать.
<?php
//CHECK IF POST DATA IS EMPTY IF SO KILL THE SCRIPT
if(empty($_POST['email']) || empty($_POST['pass'])){
//echo("error msg");
die();
}
$mysqli = new mysqli('localhost', 'root', 'root', 'accounts');
$pass = md5($_POST['pass']);
$query = "SELECT `id` FROM `users` WHERE `email` = '"
. $mysqli->real_escape_string($_POST['email'])
. "' AND `password` = '"
. $mysqli->real_escape_string($_POST['pass']) . "'";
//INITIATE DB REQUEST
$result = $mysqli->query($query);
//SELECT ID(OBJ) FROM THE RESULT OBJECT
$usrid = $result->fetch_object()->id;
//IF $USRID IS TRUE... USER DOES EXIST (AUTHENTICATED)
if ($usrid) {
$sesh = create_session($usrid);
update_session($usrid, $sesh);
setcookie("usersesh", $sesh, 0,"/");
} else {
//echo("error msg");
}
$result->free();
$mysqli->close();
function create_session($usrid) {
$time = microtime();
$hash = substr($time, 2, 3);
$key = $usrid * $hash;
$sesh = md5($key);
return $sesh;
}
function update_session($usrid, $sesh) {
$mysqli = new mysqli('localhost', 'root', 'root', 'accounts');
$query = "UPDATE `users` SET `session` = '"
. $mysqli->real_escape_string($sesh) . "' WHERE `id` = '"
. $mysqli->real_escape_string($usrid) . "'";
$mysqli->query($query);
$mysqli->close();
}
?>
Проверяете ли вы, что адрес электронной почты/пароль в базе данных возвращает true перед выдачей автозапуска? –
Это правильно. Я просто не могу найти безопасный способ генерации токенов для незарегистрированных пользователей. Поскольку это проект iOS, я пытаюсь запретить пользователям генерировать аутентификационный токен из Интернета. @JordanDavis – Idris
Не имеет значения, какое устройство подключается, просто извлеките переменные из $ POST, а затем проверьте на базу данных, если пользователь существует, тогда создайте сеанс. Я приведу пример ниже. –