Как правильно проверить наличие неиспользованного файла cookie?

#php #cookies

#php #файлы cookie

Вопрос:

У меня возникли проблемы с тем, чтобы мой код игнорировал загрузку файла cookie с истекшим сроком действия.

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

 setcookie('mysiteCookieBlah', $token, $expiry, '/', 'https://www.mysite.com', 1, 1); 
  

Всякий раз, когда они обновляют страницу, если они не вошли в систему, т.Е. У них нет идентификатора пользователя в сеансе, я затем проверяю наличие файла cookie, чтобы узнать, должен ли я инициализировать их автоматическую регистрацию…

 if(isset($_COOKIE['mysiteCookieBlah'])) 
  $intiAutoLogin=true; 
else 
  $intiAutoLogin=false;  
  

Когда они выходят из системы, у меня истекает срок его действия…

 unset($_COOKIE['mysiteCookieBlah']);
setcookie('mysiteCookieBlah', "", time()-3600, '/', 'https://www.mysite.com', 1, 1);
  

При следующем обновлении страницы,

 if(isset($_COOKIE['mysiteCookieBlah'])) 
  $intiAutoLogin = ?
  

должно = false, верно? На данный момент он видит файл cookie каждый раз, независимо от того, истек ли срок его действия.

Спасибо, что взглянули.

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

1. if(isset($_COOKIE['mysiteCookieBlah']) amp;amp; !empty($_COOKIE['mysiteCookieBlah'])) {.... ?

2. Чтобы убедиться, что срок действия файла cookie истек, вы можете сохранить истекшее время на стороне сервера.

3. Спасибо, ребята. После добавления amp;amp; !empty($_COOKIE[‘mysiteCookieBlah’]) он по-прежнему запускает $intiAutoLogin=true . Я сохраняю и проверяю срок действия в базе данных, но я не хочу запускать базу данных, если срок действия самого файла cookie истек. Я протестировал еще несколько, и, похоже, файл cookie не перезаписывается. Я тоже попытался установить новый файл cookie, но он тоже не записывается, поэтому я изучу еще немного. К вашему сведению, это тоже AJAX-запрос. Приветствия.

Ответ №1:

Я изменил свой код cookie для выхода из системы на

 setcookie("mysiteCookieBlah", "", time()-3600, '/');
  

и это сработало. Я понятия не имею, почему.