domain в setcookie - не работает(

Статус
В этой теме нельзя размещать новые ответы.

imdem

Новичок
domain в setcookie - не работает(

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

например

r.domain.ru
www.domain.ru
privet.domain.ru

из документации по php вроде просто надо задать маску домена - и тогда кука будет доступна всем поддоменам

делаю так (запускаю http://r.domain.ru/1.php, http://www.domain.ru/1.php и т.д.), содержащий строку

setcookie('test','privet',time()+3600,'/','.domain.ru');

результат нулевой - в куки ниче не пишется, соотвественное не читается

если писать без имени домена
setcookie('test','privet',time()+3600,'/'); -все пишется чудесно - читается...но как и следовало ожидать - чтение ограничивается тем доменом, из-под которго файлик был запущен


вопрос - как победить траблу и суметь записать куку, которую будут видеть все поддомены *.domain.ru ?

ps поиски по инету ниче не дали - везде пишется что все должно работать(
 

pchelovod

Новичок
может фишка в этом:

Only hosts within the specified domain can set a cookie for a domain and domains must have at least two (2) or three (3) periods in them to prevent domains of the form: ".com", ".edu", and "va.us". Any domain that fails within one of the seven special top level domains listed below only require two periods. Any other domain requires at least three. The seven special top level domains are: "COM", "EDU", "NET", "ORG", "GOV", "MIL", and "INT".

http://wp.netscape.com/newsref/std/cookie_spec.html
 

imdem

Новичок
поставил эксперимент...эксперимент получился любопытный...
если в домене задаю

'.domain.ru' и выполняю неважно под каким доменом (yuiywe.domain.ru или www.domain.ru) - то отлично пишется в куки(в любом случае)...но из куков читается для любого адреса кроме www.domain.ru

если же в домен пишу 'www.domain.ru' или '.www.domain.ru'...' то кука пишется, но читается только с www.domain.ru


хочется чтобы кука читалась независимо от того под каким доменом была выполнена программа...ну или поскольку www.domain.ru - основной...то чтоб было наоборот) - под ним писалось в куки и читалось из под остальных доменов

*может в тему: физически существует ессно только один каталог с сайтом и прописаны разные алиасы, в частности в конфиге апача прописан *.domain.ru
 

Фанат

oncle terrible
Команда форума
почисть кэш браузера для начала, экспериментатор
 

imdem

Новичок
спешиал 4 ю
почистил)
результат не изменился

*поставил эксперимент - это значит устойчивый результат - получающийся всегда(многократно) в ff и ie

*надеюсь, предложений переинсталлять винды не будет? или пересобрать сервер?)
 

Фанат

oncle terrible
Команда форума
нет.
будет предложение воспользоваться поиском по форуму

-~{}~ 05.02.07 20:18:

и оформи вопрос по-челочечески.
тестовый код + реальные заголовки.
 

imdem

Новичок
в поисках - и не только по этому сайту провел вчера большую часть дня - ничего не нашел...точнее нашел реализацию через javascript - работоспособность не проверял, ибо тз не удовлетворяет).
все остальные варианты - это то, что я пробовал сделать но не получилось..правда везде идет на уровне рекомендаций - надо сделать так (и ссылка на истертый хелп к php)


начало
есть домен domain.ru
есть алиасы к нему *.domain.ru(прописаны в конфиге апача)
задача - иметь общие куки для всех доменов. Проект не нулевой - рабочий, куки сейчас уже пишутся через php (с www.domain.ru) - хочется чтобы можно было их читать из под любых доменов - алиасов.


Как делать переадресацию знаю - это некрасивый. но выход из данной ситуации, хочется нацти красивый выход.

код в исходниках - ок)

1.php

<?php

echo $_COOKIE['test'];
setcookie('test','privet',time()+3600,'/','.domain.ru');

?>

1.пускаю http://www.domain.ru/1.php экран ессно ноль (типа кука должна писаться

2 меняю код

<?php
echo $_COOKIE['test'];

//setcookie('test','privet',time()+3600,'/','.domain.ru');

?>

3. пускаю http://www.domain.ru/1.php?ewrer (ожидаю показ записанной куки - ничего нет

4 пускаю http://erter.domain.ru/1.php?ewrer (ожидаю показ записанной куки - все ок - на экране

privet

5. пробую запуск из под других произвольных доменных имен (*.domain.ru)- все ок - кука читается

6 повторяю шаг 3 - безрезультатно

7. восстанавливаю исходный код, меняю куку

<?php

echo $_COOKIE['test'];
setcookie('test','privet111',time()+3600,'/','.domain.ru');

?>

8. повторяю шаги 6 и 7 все пишется - в шаге 6 и читается в шаге 7


промежуточный итог

строка
setcookie('test','privet111',time()+3600,'/','.domain.ru'); - записывает куку из под любого домена
читает из под любого домена кроме domain.ru и www.domain.ru


следущий шаг
меняем код на
<?php

echo $_COOKIE['test'];
setcookie('test','privet333',time()+3600,'/','www.domain.ru');

?>
выполняем шаги 1-3, шаг 3 оканчивается успешно - на экране

privet333


последний шаг
пускаю
http://werwer.domain.ru/1.php?werwe23334

на экране

privet111
рефреш ничего не дает

можно добавить пару строчек в код - чтобы убедится что рефреш работает - строчки на экране появятся, но часть, отвечающая за куку останется прежней

вывод два - такая запись куки видна только www.domain.ru а всем доменам-алиасам не видна (в принципе этот результат ожидаем)


Как еще подробнее написать не знаю - разве что заменить слова повторяем шаг на копирование строки шага)

есть еще некрасивый выход - место записи кук в коде дублировать в двух вариантах...более красивый чем переадресация...но менее - потому что надо лопатить кучу кода
 

imdem

Новичок
кикие нить аргументы за недолжно работать кроме глубокой уверенности можете привести?)
ибо
To make the cookie available on all subdomains of example.com then you'd set it to '.example.com'. The . is not required but makes it compatible with more browsers. Setting it to www.example.com will make the cookie only available in the www subdomain.

посмотрите п.4...то что записывается в п.1 воспроизводится в п.4..
то есть запись куки из п.1 идет

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

я не настаиваю на предложенном мною коде - готов принять любой другой вариант
ограничение одно - запись куков должна идти через php setcookie и читаться потом php же
 

hermit_refined

Отшельник
ещё раз - такого не бывает.
если у вас бывает - дайте ссылку, по которой это можно воочию увидеть.

-~{}~ 06.02.07 09:53:

To make the cookie available on all subdomains of example.com then you'd set it to '.example.com'. The . is not required but makes it compatible with more browsers. Setting it to www.example.com will make the cookie only available in the www subdomain.
это вы к чему?..
P.S. А, понял. Вы незнакомы со словом "воспроизводится". Имелось в виду, что ваш первый тест (у меня, например) отрабатывает с другими результатами, нежели вы рассказываете. Иными словами - кука как раз должна отдаваться серверу браузером.
 

imdem

Новичок
оказалось что бывает...
и дело не в пхп
алиасы не совсем корректно были прописаны

разбирались сейчас с админом...
был прописан алиас www.domain.ru
и *.domain.ru

оставили только последний и все заработало

всем спасибо)
 

denver

?>Скриптер
imdem
был прописан алиас www.domain.ru
и *.domain.ru
И что, это считается некоректным?
Теперь всегда хвехдочку ставить, даже если нужно только
www.domain.ru и
sssss.domain.ru
А иначе куки не будут ставиться?
 

Фанат

oncle terrible
Команда форума
Очень сложно беседовать с человеком, который, с одной стороны, считает себя очень большим специалистом, а с другой - никогда не слышал о протоколе НТТР.

И не стоит, пожалуй.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху