Предположительно, вы не получили за два дня ни одного ответа, потому что никто не понял ваш вопрос. Формулируйте понятнее)
Попробую поиграть в бабушку Вангу.
Авторизация:
$login = $_POST['login'];
$pwd = $_POST['password'];
$result = $db->query("select `id`,`password`,`sessions` from `users` where `login` = '$login' limit 1");
if ($result->num_rows < 1) {
echo "User not found";
} else {
$user = $result->fetch_assoc();
$dbpwd = $user['password'];
if (password_verify($pwd,$dbpwd)) {
$id = $user['id'];
$sessions = $user['sessions'];
if ($sessions == "") {$sessions = "[]";}
$sess = md5($login.$dbpwd.microtime().rand(-9999,9999));
setCookie("session",$sess,time()+365*24*60*60);
$sessions = json_decode($sessions,true);
$sessions[] = $sess;
$sessions = json_encode($sessions);
$db->query(`update `users` set `sessions` = '$sessions' where `id` = '$id' limit 1");
echo "User logged in";
} else {
echo "Uncorrect password";
}
}
Проверка авторизации (на каждой странице, доступ к которой требует авторизации):
if (!isset($_COOKIE['session']) or $_COOKIE['session'] == "") {
header("Location: /login");
} else {
$sess = $_COOKIE['session'];
$result = $db->query("select * from `users` where `sessions` like '%$sess%' limit 1");
if ($result->num_rows) {
echo "You authorized";
$user = $result->fetch_assoc();
} else {
setCookie("session","",0);
header("Location: /login");
}
}
Если пользователь авторизовался корректно, то в массиве $user будут его данные из БД.
Сергей ТитовУченик (189)
1 год назад
А вопрос такой,может знаешь? У меня есть авторизация системой одноразовых паролей, то есть как итог в бд добавляется почта пароль и время когда он создан. Дело в том, что при каждой новой авторизации создается новая строка с одной и той же почтой, прост другой пароль и время создания, так в принципе и оставляют или все-таки нужно как-то сделать так что бы он не дублировал строки?
Пытался получить так: $_SESSION['email'] = $email; и так же для id.
Мне кажется копаться надо где-то в авторизации
Если кто-то может помочь я скину ссылку сайта,те кода что пробовал и даже сотку:))