Loading...
Почему авторизация не пашет , что не так ?

php
if(isset($_COOKIE['user_id']) && isset($_COOKIE['token']))
{
if(mysqli_num_rows(mysqli_query($mysqli, "SELECT COUNT(*) FROM `users` WHERE `user_id` = '".int($_COOKIE['user_id'])."' AND `token` = '".str($_COOKIE['token'])."'")) > 0)
$user = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT * FROM `users` WHERE `user_id` = '".int($_COOKIE['user_id'])."'"));

if(isset($user))
{
if(($user['user_id'] != $_COOKIE['user_id']) || $user['token'] != $_COOKIE['token'])
{
setcookie('user_id', '', time() - 60*60*24*365, '/');
setcookie('token', '', time() - 60*60*24*365, '/');
exit;
}
}
}

________
посл. ред. 18.06.2023 в 15:11; всего 2 раз(а); by SNEG
так ты пустые данные присваиваешь же, да и проверок море ненужных
d1nka (18 июня 2023, в 14:59)
так ты пустые данные присваиваешь же, да и проверок море ненужных
Например,какие проверки лишние?
попробуй так

php
if(isset($_COOKIE['user_id']) && isset($_COOKIE['token']))
{

$user = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT * FROM `users` WHERE `user_id` = '".abs((intval($_COOKIE['user_id']))."'"));

if(isset($user))
{
if(($user['user_id'] != $_COOKIE['user_id']) || $user['token'] != $_COOKIE['token'])
{
setcookie('user_id', '', time() - 60*60*24*365, '/');
setcookie('token', '', time() - 60*60*24*365, '/');
exit;
} else {

setcookie('user_id', $user['user_id'], time() - 60*60*24*365, '/');
setcookie('token', '', time() - 60*60*24*365, '/'); // занос токена , где он там генерируется у тебя
exit;


}
}
d1nka , В чём смысл сверять id в куки с бд, если поиск в бд по этому значению и производится)*hz*
И вообще я использовал бы !empty в первом условии, что бы пустые поля не обрабатывать.

php
if (!empty($_COOKIE['user_id']) and !empty($_COOKIE['token'])) {
$user = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT * FROM `users` WHERE `user_id` = '" . abs(intval($_COOKIE['user_id']) . "'")));
if (isset($user)) {
if ($user['token'] != $_COOKIE['token']) {
unset($user);
setcookie('user_id', '', time() - 60 * 60 * 24 * 365, '/');
setcookie('token', '', time() - 60 * 60 * 24 * 365, '/');
}
}
}

________
посл. ред. 18.06.2023 в 16:57; всего 3 раз(а); by _(Ulty)_
Лучший ответ
_(Ulty)_ (18 июня 2023, в 16:40)
d1nka , В чём смысл сверять id в куки с бд, если поиск в бд по этому значению и производится)*hz*
И вообще я использовал бы !empty в первом условии, что бы пустые поля не обрабатывать.

php
if (!empty($_COOKIE['user_id']) and !empty($_COOKIE['token'])) {
$user = mysqli_fetch_assoc(mysqli_query($mysqli, "SELECT * FROM `users` WHERE `user_id` = '" . abs(intval($_COOKIE['user_id']) . "'")));
if (isset($user)) {
if ($user['token'] != $_COOKIE['token']) {
unset($user);
setcookie('user_id', '', time() - 60 * 60 * 24 * 365, '/');
setcookie('token', '', time() - 60 * 60 * 24 * 365, '/');
}
}
}
Куки может не существовать.

Изображение

------
86106_Screenshot_20230618_171320.jpg (253.8 Kb)
Скачиваний: 99
Ну и наделал я проверок не нужных 🤪🤦,
P.s спасибо всем за подсказки
________
посл. ред. 18.06.2023 в 17:47; всего 2 раз(а); by SNEG
А зачем после успешной проверки куки вновь их заливать? Че за бред?
not found, Если кука не существует, условие просто скипнется)

!empty удобней проверять на наличие какого либо содержимого в массиве)

Нет массива == false
Массив пуст == false
Если нет ключа == false
Если содержимое пустое, пробел или равно нулю == false
_(Ulty)_ (18 июня 2023, в 20:11)
not found, Если кука не существует, условие просто скипнется)

!empty удобней проверять на наличие какого либо содержимого в массиве)

Нет массива == false
Массив пуст == false
Если нет ключа == false
Если содержимое пустое, пробел или равно нулю == false
Я не спорю, автор просто решил проверить существует ли переменная, или нет, на мой взгляд можно и обе функции использовать, хотя типичнее проверять через empty. *039*

Изображение

------
86107_20230618_204034.png (13.5 Kb)
Скачиваний: 103
Онлайн: 1
Время:
Gen. 0.1232
(c) Bym.Guru 2010-2025