php — проверьте, существует ли файл сеанса на сервере

#php #session #directory #tmp

#php #сеанс #каталог #tmp

Вопрос:

Я только что столкнулся с проблемой. Я сохраняю идентификаторы сеанса в cookie, чтобы получать информацию о корзине, когда пользователь покидает сайт, а затем возвращается снова. Моя проблема в том, что в качестве теста я очистил все сеансы, но сохранил cookie, но теперь страница просто продолжает загружаться.

мой вопрос в том, есть ли способ сначала использовать php для получения каталога tmp, чтобы я мог затем проверить, действителен ли сохраненный идентификатор сеанса.

с уважением,

Фил

Редактировать

в настоящее время я использую

 if( isset( $_COOKIE[$cookieKey] ) ) {
    session_id( $_COOKIE[$cookieKey] );
}
// create a new or carry on the existing session
session_start();
  

что вызывает у меня проблему

Комментарии:

1. PHP время от времени будет очищать «устаревшие» сеансы, нет причин, по которым вы должны полагаться на проверку наличия определенного сеанса.

2. Откуда $cookieKey берется? Вы случайно не пытаетесь разделить сеансы между несколькими пользователями?

3. нет, совместное использование сеанса через общий SSL

4. Как вы можете использовать SSL, если HTTP является протоколом без состояния?

Ответ №1:

Это ненадежно и не нужно. Вместо этого добавьте проверки в свой код, чтобы выяснить, является ли $_SESSION суперглобальный файл пустым или (что еще лучше) имеет соответствующие ключи:

 <?php
if( !isset($_SESSION['foo']) ){
    // User is not fooed yet
    $_SESSION['foo'] = 33;
}
find_records_by_foo($_SESSION['foo']);
  

Обновление: Независимо от того, что вы хотите сделать с файлами cookie и идентификаторами сеанса, мой ответ остается в силе. Как только вы закончите с проверкой файлов cookie, выполните сеансовые тесты с isset() .