Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Не ставятся куки с 5-ым параметром


Автор: zzz22 8.2.2008, 01:24
Если пишу так

Код

setcookie("id", $seluser, time()+ '2592000', "/");


куки отлично ставятся - никаких проблем, когда делаю так

Код

setcookie("id", $seluser, time()+ '2592000', "/", ".".URL);
// или хотябы так
setcookie("id", $seluser, time()+ '2592000', "/", URL);


куки не ставятся вообще, никаких ошибок нет. URL - домен (например 'example')

Проверял пока только на локалхосте, но думаю не имеет значения.
Помогите пожалуйста решить проблему.

Автор: Golda 8.2.2008, 03:21
а домен совпадает с тем, с которого шлются куки? Броузер не позволит ставить куки на произвольный домен в сети

Автор: zzz22 9.2.2008, 22:31
Да, совпадает.

Автор: Golda 10.2.2008, 01:15
Пока предполагаю следующие варианты.

1. Все-таки не совпадает хост: в URL предполагаемый host, а куки ставятся на localhost, используется, но не учитывается virtual host...
2. Код, который Вы раскоментируете, чтобы получить и выставить хост для куки, приводит к выводу информации, после чего заголовки не отсылаются
3. В соответствии с названием константы, вместа хоста используется URL.

Возможно, дело в чем-то совсем другом. Чтобы не гадать, 

1. Проверьте со стороны клиента и выложите сюда, какие заголовки высылаются и как выглядят куки в присланном заголовке
2. Пытается ли броузер отправить этот заголовок. Как он выглядит при отсылке?
3. Какие заголовки попадают в скрипт?

Для первых двух пунктов удобно использовать add-on Firefox'a Live HTTP Headers. Для третьего сравните apache_request_headers() и содержимое массива $_COOKIE.

Кстати, поведение повторяется в разных броузерах или только в одном?

Автор: zzz22 14.2.2008, 12:58
Проблема решилась. Дело было в том что хост вообще был IP адресом, а обращался я по алиасу

Автор: zzz22 14.2.2008, 13:33
Хотя нет, вот пример - хост test

Код
setcookie("id", "123", time()+ '2592000', "/", "test");


print_r($_COOKIE); выдаёт Array ( ) (это естественно после перезагрузки страницы, создал отдельную пустую страницу)

print_r(apache_request_headers()); выдаёт

Цитата
    [Host] => test
    [User-Agent] => Mozilla/5.0 (Windows; U; Windows NT 6.0; ru; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12
    [Accept] => text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
    [Accept-Language] => ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3
    [Accept-Encoding] => gzip,deflate
    [Accept-Charset] => windows-1251,utf-8;q=0.7,*;q=0.7
    [Keep-Alive] => 300
    [Connection] => keep-alive
    [Cache-Control] => max-age=0


хотя LiveHTTPHeaders говорят следущее

Цитата
HTTP/1.x 200 OK
Date: Thu, 14 Feb 2008 10:32:50 GMT
Server: Apache/2.2.4 (Win32) mod_ssl/2.2.4 OpenSSL/0.9.8d PHP/5.2.4
X-Powered-By: PHP/5.2.4
Set-Cookie: id=123; expires=Sat, 15-Mar-2008 10:32:50 GMT; path=/; domain=test
Content-Length: 509
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=windows-1251

Автор: skyboy 14.2.2008, 14:10
сначала идет request, а потом уже браузер получает response с "Set-Coockie"? А что приходит на сервер в следующем request?

Автор: zzz22 14.2.2008, 14:21
Вот для большей понятности весь код скрипта

Код

<?
setcookie("id", "123", time()+ '2592000', "/", "test");
print_r($_COOKIE);
print_r(apache_request_headers());
?>



Цитата(skyboy @  14.2.2008,  14:10 Найти цитируемый пост)
А что приходит на сервер в следующем request? 

тоже самое, сколько не рефреш

Автор: Golda 15.2.2008, 01:24
а как выглядит URL, по которому Вы обращаетесь к  скрипту?

Автор: zzz22 15.2.2008, 01:26
http://test

Автор: GeneralElectric 15.2.2008, 01:35
предлагаю вместо test сделать test.ru

Автор: zzz22 15.2.2008, 16:21
о smile похоже помогло. спасиба!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)