Пытаюсь выставить куки для анонимного пользователя. Они устанавливаются, но только до закрытия браузера. После - обнуляются. Как мне получить возможность запоминать их?
Нужно: только при первом заходе пользователя на сайт показать ему определенную страницу. При последующих - уже не показывать.
Комментарии
куки надо сохранять у «себя», а не только у пользователя на компе. я обычно «хожу» вообще без куков, а при закрытии браузера естественно все удаляется.
Как это реализовать в контексте друпала?
Не, в контексте Друпала можно оперировать только сессиями, которые то же живут не долго.
Показать страницу только один раз это как раз задачка для куков.
Варианты, когда они не работают весьма ограничены. Например они отключены или пользователь в ручную их очистил, но таких вариантов достаточно мало, я так думаю, что это будет один против 20 тысяч пользователей.
Устанавливаете так:
<?php
bool setcookie ( string $name [, string $value [, int $expire= 0 [, string $path [, string $domain [, bool $secure= false [, bool $httponly= false ]]]]]] )
?>
http://ru.php.net/manual/en/function.setcookie.php
Читать через:
<?php
$_COOKIE
?>
http://ru.php.net/manual/en/reserved.variables.cookies.php
Да как куки устанавливаются, я прекрасно знаю. У меня этот механизм прекрасно работал на прежнем варианте сайта, без движка. А с друпалом - не работает. Дело в том, что сайт для Anonymous - без регистрации. А куки, насколько я поняла, работают только для зарегистрированных пользователей. Вот в этом и проблема. Как только я закрываю браузер и открываю его снова - массив кукис пуст, хотя время жизни прописываю длительное.
Хм. Думаю, что Друпал здесь ни причем. Я сам неоднократно использовал кукисы.
Может быть в Вашем браузере стоит галочка "удалять куки после закрытия".
Друпал точно на куки влиять не может. Ищите причину в другом.
Настройки по умолчанию для друпала не надо менять? У меня указано:
ini_set('session.cache_limiter', 'none');
ini_set('session.cookie_lifetime', 2000000);
ini_set('session.gc_maxlifetime', 200000);
ini_set('session.save_handler', 'user');
ini_set('session.use_only_cookies', 1);
ini_set('session.use_trans_sid', 0);
Я тут подумал, в функции setcookie() есть параметр $expire. Так вот, если его установить в ноль, то куки будут удаляться при закрытии окна браузера.
У Вас не так?
С этим все в порядке, 50 лет задала. Говорю же - этот скрипт у меня работает на недрупаловском сайте. И я так понимаю, что дело именно в настройках друпала.