Drupal && cookies

Главные вкладки

Аватар пользователя oksale oksale 26 марта 2009 в 14:31

Пытаюсь выставить куки для анонимного пользователя. Они устанавливаются, но только до закрытия браузера. После - обнуляются. Как мне получить возможность запоминать их?
Нужно: только при первом заходе пользователя на сайт показать ему определенную страницу. При последующих - уже не показывать.

Комментарии

Аватар пользователя EllECTRONC EllECTRONC 26 марта 2009 в 15:26

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

Аватар пользователя seaji seaji 26 марта 2009 в 23:51

Не, в контексте Друпала можно оперировать только сессиями, которые то же живут не долго.
Показать страницу только один раз это как раз задачка для куков.
Варианты, когда они не работают весьма ограничены. Например они отключены или пользователь в ручную их очистил, но таких вариантов достаточно мало, я так думаю, что это будет один против 20 тысяч пользователей.
Устанавливаете так:

<?php
bool setcookie  
string $name  [, string $value  [, int $expire0  [, string $path  [, string $domain  [, bool $securefalse  [, bool $httponlyfalse  ]]]]]] )
?>

http://ru.php.net/manual/en/function.setcookie.php
Читать через:

<?php
$_COOKIE
?>

http://ru.php.net/manual/en/reserved.variables.cookies.php

Аватар пользователя oksale oksale 27 марта 2009 в 9:14

Да как куки устанавливаются, я прекрасно знаю. У меня этот механизм прекрасно работал на прежнем варианте сайта, без движка. А с друпалом - не работает. Дело в том, что сайт для Anonymous - без регистрации. А куки, насколько я поняла, работают только для зарегистрированных пользователей. Вот в этом и проблема. Как только я закрываю браузер и открываю его снова - массив кукис пуст, хотя время жизни прописываю длительное.

Аватар пользователя seaji seaji 27 марта 2009 в 12:02

Хм. Думаю, что Друпал здесь ни причем. Я сам неоднократно использовал кукисы.
Может быть в Вашем браузере стоит галочка "удалять куки после закрытия".
Друпал точно на куки влиять не может. Ищите причину в другом.

Аватар пользователя oksale oksale 27 марта 2009 в 18:56

Настройки по умолчанию для друпала не надо менять? У меня указано:

ini_set('session.cache_expire',     200000);
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);
Аватар пользователя seaji seaji 27 марта 2009 в 22:37

Я тут подумал, в функции setcookie() есть параметр $expire. Так вот, если его установить в ноль, то куки будут удаляться при закрытии окна браузера.
У Вас не так?

Аватар пользователя oksale oksale 30 марта 2009 в 9:56

С этим все в порядке, 50 лет задала. Говорю же - этот скрипт у меня работает на недрупаловском сайте. И я так понимаю, что дело именно в настройках друпала.