Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как правильно передать данные в cookies между двумя разными доменами?
 
 автор: amigo62   (23.06.2008 в 14:38)   письмо автору
 
 

Здравствуйте, форумчане:) Использую примерно такой код (находится, положим, на test.net):
<?
$cipher 
$userlog.'||'.$userpass;
setcookie("ads",$cipher,time()+30,"/","host.org");

header("Location: http://host.org/");
?>

проверяю - не передает $cipher.
Лезу в куки браузера для домена host.org - там пустая кука "ads".
В чем же дело? пробовал string domain ".host.org", ".org" - результат тот же, т.е. никакой.

З.Ы.: Можно ли как-то создавать сессию, действительную для двух сайтов на одном сервере (test.net и host.org например), если PHPSID передается только через cookies?

   
 
 автор: mihdan   (23.06.2008 в 14:54)   письмо автору
 
   для: amigo62   (23.06.2008 в 14:38)
 

test.net и host.org - вообще-то разные домены!

host.org и test.host.net - вот это прокатит

Вот из мануала:

domain
   The domain that the cookie is available. 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. Refer to tail
   matching in the » spec for details.

   
 
 автор: amigo62   (23.06.2008 в 14:58)   письмо автору
 
   для: mihdan   (23.06.2008 в 14:54)
 

>test.net и host.org - вообще-то разные домены!
я заметил;)
>
>host.org и test.host.net - вот это прокатит
домены, к сожалению, не я выбирал:( мне поставлена задача, чтобы прокатило именно с существующими...
сейчас попробую через www направлять... Нужно лишь, чтобы кука, вставленная на 1 домене, работала на 2, а на 1 - совсем не обязательно.

не работает! Почему кука "ads" host.org пустая создается, не могу понять:(

   
 
 автор: SiM(R)   (23.06.2008 в 16:40)   письмо автору
 
   для: amigo62   (23.06.2008 в 14:58)
 

>time()+30

действия этой куки всего 30 секунд

   
 
 автор: amigo62   (23.06.2008 в 17:11)   письмо автору
 
   для: SiM(R)   (23.06.2008 в 16:40)
 

Да, так задумано. Увеличивал и до 300, это ничего не дает. Кстати, теперь кука вообще не ставится:(

   
 
 автор: AcidTrash   (23.06.2008 в 22:19)   письмо автору
 
   для: amigo62   (23.06.2008 в 14:38)
 

Для разных доменов куки будут разные, даже если их имена - одинаковые.
Так как домены разные, читать куки для другого домена не получится.

   
 
 автор: denvor   (14.01.2009 в 18:49)   письмо автору
 
   для: AcidTrash   (23.06.2008 в 22:19)
 

Напрямую - не получится.
А если через сокеты обращаться к файлу, читающему куки в родном домене?

   
 
 автор: Trianon   (14.01.2009 в 18:59)   письмо автору
 
   для: denvor   (14.01.2009 в 18:49)
 

>Напрямую - не получится.
>А если через сокеты обращаться к файлу, читающему куки в родном домене?
И кто в этом случае будет выступать клиентом? :)

   
 
 автор: denvor   (14.01.2009 в 19:32)   письмо автору
 
   для: Trianon   (14.01.2009 в 18:59)
 

Хороший вопрос. Ответ напрашивался мучительно долго :) - конец рабочего дня

Так что же делать?

   
 
 автор: Саня   (14.01.2009 в 19:09)   письмо автору
 
   для: amigo62   (23.06.2008 в 14:38)
 

Можно устанавливать куки через скрытый iframe. Например

<b>Ссылка на этот файл: http://host.org/index.php</b>
<iframe src="http://test.net/setcookie.php" width="0" height="0"></iframe>

Код setcookie.php:
<?
session_start
();
if ( !empty(
$_SESSION['is_user_logined']) ) {
  
setcookie("PHPSESSID"session_id()); 
}
Соответственно оба сайта должны работать на одних и тех же скриптах.

   
 
 автор: Eugene77   (17.01.2009 в 18:51)   письмо автору
 
   для: amigo62   (23.06.2008 в 14:38)
 

У вас ошибка
<?
setcookie
("ads",$cipher,time()+30,"/","host.org");
Точку в адресе домена забыли:
<?
setcookie
("ads",$cipher,time()+30,"/",".host.org");

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования