Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Оптимальная запись кук

249
04 марта 2007 года
DissDoc
639 / / 01.10.2004
Существует ли универсальная запись кук? Я просто тестировал на локалхосте свой скрипт - работает замечательно. А вот перезалил на хост прова - куки перестали сохраняться. Вот в таких ситуациях как поступать?
Скрипт банален
 
Код:
setcookie("user", $user, time()+3600*24*2, "/");
setcookie("pwrd", $pwrd, time()+3600*24*2, "/");

Может стоит как-то иначе записывать?
239
04 марта 2007 года
Dolonet
1.7K / / 20.05.2000
Возможно, не совсем однозначно читаются значения куков?
Попробуйте убрать последний необязательный параметр "/"
239
04 марта 2007 года
Dolonet
1.7K / / 20.05.2000
Информация по SetCookie тут:
http://ru2.php.net/manual/ru/function.setcookie.php
249
04 марта 2007 года
DissDoc
639 / / 01.10.2004
За ссылку спасибо - я там уже был ;) И даже если убрать "/" четвертый параметр ничего не изменяется куки не сохраняются.
239
04 марта 2007 года
Dolonet
1.7K / / 20.05.2000
Можете привести print_r($_COOKIES) в обоих случаях, т.е. на сервере и локалхосте?
249
04 марта 2007 года
DissDoc
639 / / 01.10.2004
Вы опять описались =) print_r[$_COOKIE]
На локале Array ( [rusgame_current_user] => Admin [rusgame_current_pwrd] => 202cb962ac59075b964b07152d234b70 )
На хосте Array ( [PHPSESSID] => ac344c07d59edb20b1aaafba57544270 )
239
04 марта 2007 года
Dolonet
1.7K / / 20.05.2000
Очевидно, переменная просто не записалась в куки.
Думаю, что в скрипте возникает какой-нибудь варнинг, который заставляет хедеры отправиться, поэтому setcookie и не работает, выдавая тоже варнинг. Но Вы сразу же перегружаете страницу, и этого не видите.
Возможно, я не прав.
249
04 марта 2007 года
DissDoc
639 / / 01.10.2004
Возможно. Сейчас сил уже просто нет и желания лазать. Завтра посмотрю и отрепортирую свой результат =)
239
04 марта 2007 года
Dolonet
1.7K / / 20.05.2000
Кстати, проблема может быть еще в том, что "time()+3600*24*2" сначала плюсуется, потом перемножается, и, таким образом, дата получается настолько кривая, что встает перед реальной "time()", и поэтому куки не записываются. Попробуйте написать так: "time()+(3600*24*2)".
249
05 марта 2007 года
DissDoc
639 / / 01.10.2004
Неа. Ни один вариант не работает! Я вот какой скрипт сделал
 
Код:
<?php
print_r($_COOKIE);
echo "<br/>";
echo "cookie ".$_COOKIE['rr'];
setcookie("rr", "DissDoc", time()+(3600*24*2), "/");
?>


Результат тут http://rusgame.isrv.ru/test.php
239
05 марта 2007 года
Dolonet
1.7K / / 20.05.2000
У меня все работает
 
Код:
Array ( [PHPSESSID] => a8be0784660bd7f5aabfd1890379f478 [rr] => DissDoc )
cookie DissDoc
249
05 марта 2007 года
DissDoc
639 / / 01.10.2004
РЕШИЛ! setcookie нужно вставить ДО вывода и т.п. (почитал мануальчик)
239
05 марта 2007 года
Dolonet
1.7K / / 20.05.2000
Ну, вообще-то я об этом уже писал ) Куки идут с headers, а значит, если идет хоть какой-то вывод перед определениями куков, то они не смогут быть определены.
8
05 марта 2007 года
mfender
3.5K / / 15.06.2005
Цитата: DissDoc
РЕШИЛ! setcookie нужно вставить ДО вывода и т.п. (почитал мануальчик)


Кстати, если использовать буферизацию вывода, то куки можно хоть где устанавливать.

249
05 марта 2007 года
DissDoc
639 / / 01.10.2004
Т.е. буферизацию? Я найти не могу никак где это описано (

Все. нашел. я так понял (с англ не очень хорошо общаюсь) ob_start и т.п.
И что я раньше не замечал этого (
8
05 марта 2007 года
mfender
3.5K / / 15.06.2005
Ещё настоятельно рекомендую прочитать про ob_start("ob_gzhandler"); - очень полезная вещь, особенно в части сокращения трафика.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог