Оптимальная запись кук
Скрипт банален
Код:
setcookie("user", $user, time()+3600*24*2, "/");
setcookie("pwrd", $pwrd, time()+3600*24*2, "/");
setcookie("pwrd", $pwrd, time()+3600*24*2, "/");
Может стоит как-то иначе записывать?
Попробуйте убрать последний необязательный параметр "/"
Информация по SetCookie тут:
За ссылку спасибо - я там уже был ;) И даже если убрать "/" четвертый параметр ничего не изменяется куки не сохраняются.
Можете привести print_r($_COOKIES) в обоих случаях, т.е. на сервере и локалхосте?
На локале Array ( [rusgame_current_user] => Admin [rusgame_current_pwrd] => 202cb962ac59075b964b07152d234b70 )
На хосте Array ( [PHPSESSID] => ac344c07d59edb20b1aaafba57544270 )
Думаю, что в скрипте возникает какой-нибудь варнинг, который заставляет хедеры отправиться, поэтому setcookie и не работает, выдавая тоже варнинг. Но Вы сразу же перегружаете страницу, и этого не видите.
Возможно, я не прав.
Возможно. Сейчас сил уже просто нет и желания лазать. Завтра посмотрю и отрепортирую свой результат =)
Кстати, проблема может быть еще в том, что "time()+3600*24*2" сначала плюсуется, потом перемножается, и, таким образом, дата получается настолько кривая, что встает перед реальной "time()", и поэтому куки не записываются. Попробуйте написать так: "time()+(3600*24*2)".
Код:
<?php
print_r($_COOKIE);
echo "<br/>";
echo "cookie ".$_COOKIE['rr'];
setcookie("rr", "DissDoc", time()+(3600*24*2), "/");
?>
print_r($_COOKIE);
echo "<br/>";
echo "cookie ".$_COOKIE['rr'];
setcookie("rr", "DissDoc", time()+(3600*24*2), "/");
?>
Результат тут http://rusgame.isrv.ru/test.php
Код:
Array ( [PHPSESSID] => a8be0784660bd7f5aabfd1890379f478 [rr] => DissDoc )
cookie DissDoc
cookie DissDoc
РЕШИЛ! setcookie нужно вставить ДО вывода и т.п. (почитал мануальчик)
Ну, вообще-то я об этом уже писал ) Куки идут с headers, а значит, если идет хоть какой-то вывод перед определениями куков, то они не смогут быть определены.
Цитата: DissDoc
РЕШИЛ! setcookie нужно вставить ДО вывода и т.п. (почитал мануальчик)
Кстати, если использовать буферизацию вывода, то куки можно хоть где устанавливать.
Все. нашел. я так понял (с англ не очень хорошо общаюсь) ob_start и т.п.
И что я раньше не замечал этого (
Ещё настоятельно рекомендую прочитать про ob_start("ob_gzhandler"); - очень полезная вещь, особенно в части сокращения трафика.