Mysql Как правильно проверять срок годности cookie на стороне сервера?

Squats

Новичок
Все данные которые вставляю обрабатываю через mysqli_real_escape_string
Умоляю, только не переходите на global $mysqli;
В данном случае предпочтительнее использовать модуль PDO.
В котором все головняки, сделаны за вас, а вам, гарантированно полученные данные в виде массива в целостности и сохранности.
использую щас их, но у них срок годности маленький же, понятно что можно это увеличить значение с 24 минут, но это вроде не лучшая практика?
Существует всего 2 способа передачи идентификатора сессии - это через cookie и через url.
В вашем случае оптимально использовать cookie, так как они у вас доступны.
И при start_session() у вас в cookie будет храниться PHPSESSID который будет указывать на глобальный массив $_SESSION.
Который вы записываете на сервере. (при этом вы не сможете его просто взять и посмотреть, как например с параметризированным cookie, который вы записываете на стороне сервера или на стороне клиента, в браузер, что сможете в 2 клика посмотреть, что вы там записали и вы можете даже не осознано записать, то, что не нужно было записывать во всеобщий доступ, да и для безопасности и конфиденциальности данных пользователя, нужно использовать сессии, которые хранятся и выполняются на стороне сервера).
Время жизни сессии, вы можете регулировать с помощью конфига session.gc_maxlifetime в php.ini.
 

ImperatorR

Новичок
При авторизации я делаю так:
PHP:
$_SESSION['login'] = $login;
$_SESSION['email'] = $row ['email'];
$_SESSION['access'] = $row ['access'];
Далее делаю проверку для доступа в закрытый раздел сайта:

PHP:
if (!isset($_SESSION['login']) AND !isset($_SESSION['email']) AND $_SESSION['access']='2')
{
    header("Location: $site_url/index.php?s=login");
    exit;
}
else {....}
Почему $_SESSION['access']='2' не работает?
Если я сделаю echo $_SESSION['access'] то выводит соответствующую цифру 3, т.е. переменную эту он видит, но почему то не работает условия и он все равно выводит страницу, хотя не должен выводить, а должен сделать редирект, т.к. у меня у юзера для теста $_SESSION['access'] стоит цифра 3
 

Valick

Новичок
Почему $_SESSION['access']='2' не работает?
потому что надо понимать, что ты пишешь, а не копировать бездумно код откуда попало и потом пытаться что-то там подправить
ты переменной $_SESSION['access'] присваиваешь цифру 2, для сравнения используют == или ===
и перестань писать AND в РНР, ему место в SQL, в РНР принято писать &&
 

Squats

Новичок
Почему $_SESSION['access']='2' не работает?
Все дело в том, что нужно запускать сессии.
Cоздайте файл и обратись к нему по адресу, для теста:
PHP:
<?php
    
PHP_SESSION_ACTIVE !== session_status() && session_start();

!isset($_SESSION['key1'], $_SESSION['key2'], $_SESSION['key3']) && ($_SESSION = [
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3'
]);

var_dump($_SESSION);
Обновите страницу несколько раз, чтобы убедиться в том, что сессии остаются, для более точного результата, закомментируйте:

PHP:
!isset($_SESSION['key1'], $_SESSION['key2'], $_SESSION['key3']) && ($_SESSION = [
    'key1' => 'value1',
    'key2' => 'value2',
    'key3' => 'value3'
]);
Результат должен остаться:

PHP:
array(3) {
  ["key1"]=>
  string(6) "value1"
  ["key2"]=>
  string(6) "value2"
  ["key3"]=>
  string(6) "value3"
}
 
Сверху