Обучение/Помощь новичкам | Нужна помощь
Тема закрыта by
SNEG
Почему авторизация не пашет , что не так ?
________
посл. ред. 18.06.2023 в 15:11; всего 2 раз(а); by SNEG
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
так ты пустые данные присваиваешь же, да и проверок море ненужных
так ты пустые данные присваиваешь же, да и проверок море ненужных
попробуй так
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;
}
}
И вообще я использовал бы !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)_
Лучший ответ
DELETED
18 июня 2023, в 17:12
Delete

И вообще я использовал бы !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, '/');
}
}
}------
Скачиваний: 99
Ну и наделал я проверок не нужных 🤪🤦,
P.s спасибо всем за подсказки
________
посл. ред. 18.06.2023 в 17:47; всего 2 раз(а); by SNEG
P.s спасибо всем за подсказки
________
посл. ред. 18.06.2023 в 17:47; всего 2 раз(а); by SNEG
А зачем после успешной проверки куки вновь их заливать? Че за бред?
not found, Если кука не существует, условие просто скипнется)
!empty удобней проверять на наличие какого либо содержимого в массиве)
Нет массива == false
Массив пуст == false
Если нет ключа == false
Если содержимое пустое, пробел или равно нулю == false
!empty удобней проверять на наличие какого либо содержимого в массиве)
Нет массива == false
Массив пуст == false
Если нет ключа == false
Если содержимое пустое, пробел или равно нулю == false
DELETED
18 июня 2023, в 20:43
Delete
not found, Если кука не существует, условие просто скипнется)
!empty удобней проверять на наличие какого либо содержимого в массиве)
Нет массива == false
Массив пуст == false
Если нет ключа == false
Если содержимое пустое, пробел или равно нулю == false
------
Скачиваний: 103

