Вопросы по PHP

1 23
DV
На сайте с 01.05.2010
Offline
644
#21

Наврал. Работает такое:

setcookie('logged', TRUE, time()-10000000000, '/');

А такое не работает:

setcookie('logged', TRUE, time()-1000000000, '/');
Похоже, нужно время не больше нуля. Что-то какой-то дурдом 😡

---------- Добавлено 16.08.2013 в 11:16 ----------

Dinozavr:
Если в качестве значения задать пустую строку или FALSE, а остальные параметры задать соответственно предыдущему вызову, установившему cookie, тогда cookie c заданным именем будет удалено с клиентской машины.
Почему же у меня Firefox показывает неизменное значение 1, когда я ставлю FALSE или ''? Противоречие.
VDS хостинг ( http://clck.ru/0u97l ) Нет нерешаемых задач ( https://searchengines.guru/ru/forum/806725 ) | Перенос сайтов на Drupal 7 с любых CMS. ( https://searchengines.guru/ru/forum/531842/page6#comment_10504844 )
O
На сайте с 16.02.2013
Offline
7
#22

Можно вообще опустить параметр где указывается время. Ведь параметр $expire по умолчанию имеет значение равное нулю. Этот параметр не является обязательным в функции. Тоже так же как и параметр $value. Для того чтоб cookie удалились достаточно вызвать функцию setcookie() только с одним параметром $name - имя cookie.

D
На сайте с 14.01.2007
Offline
153
#23

DenisVS, это не дурдом, а UNIX TIMESTAMP;)

Okula, 0 или без expires удалит куку по закрытию браузера, а не сразу

DV
На сайте с 01.05.2010
Offline
644
#24

Okula, а вот и, как говорится, хрен на руль :)

Образуется дубль до скончания сессии без контента, а старая сохраняется!

---------- Добавлено 16.08.2013 в 11:23 ----------

Dinozavr, оно понятно, и задумка ваша понятна, чтобы срок был истёкший, а не получается, надо за Anno Domini уводить почему-то.

O
На сайте с 29.05.2008
Offline
195
#25
DenisVS:
По предыдущему вопросу скорость обработки устроила, узкими оказались другие места.
Надоумьте по setcookie. Почему-то не срабатывает boolean FALSE.
К примеру, ставим куку "залогинен":
setcookie('logged', TRUE, time()+60*60*24*30, '/');

Всё нормально, смотрю в Firefox, вижу значение 1.
Теперь нужно скинуть его в 0.
setcookie('logged', FALSE);

Фигвам, при разлогинивании ничего не происходит, значение 1 остаётся. При следующем логине рожает ещё одну такую же. А вот когда указываем цифрой
setcookie('logged', 0);

всё нормально сбрасывается. Что за нафинг?

З.Ы. логин происходит независимо от этого, там CMS.
Кстати, а как вообще пристрелить куку, чтобы не было?

Ну и устанавливайте 0. В чем проблема? На 3 символа меньше писать.

O
На сайте с 16.02.2013
Offline
7
#26

Поэксперементировал сейчас с созданием cookie.

Создаю так:

setcookie('test_name', '1', time()+300, '/test/');

Создаётся cookie со значением 1. Теперь удаляю:

setcookie('test_name', '', 0);

Всё удаляется.

---------- Добавлено 16.08.2013 в 11:37 ----------

Даже если сократить до такой записи

setcookie('test_name', '');

удаляется

O
На сайте с 29.05.2008
Offline
195
#27

Может дело в том что FALSE, а не false. Мало ли. Если это обрабатывает браузер, а не интерпретатор, мб, браузер распознает это как string?

D
На сайте с 14.01.2007
Offline
153
#28
Okula:
Для того чтоб cookie удалились достаточно вызвать функцию setcookie() только с одним параметром $name - имя cookie.
Okula:
setcookie('test_name',*'',*0);*
Okula:
setcookie('test_name',*'');*

2 параметра ;)

O
На сайте с 16.02.2013
Offline
7
#29

Да, два. Если писать с одним то просто удаляется значение cookie, что, впринципе, тоже нормально. Думаю в дальнейшем будут проверки типо

if(!empty($_COOKIE['test_name']))

С пустым значением cookie такую проверку не пройдёт.

DV
На сайте с 01.05.2010
Offline
644
#30
ortegas:
Может дело в том что FALSE, а не false.

проверил, без разницы.

Okula, ваш вариант не работает.

Может быть от того, что URL логина и выхода не совпадают? При выходе редиректит на главную.

1 23

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий