сессии и сабдомены

citymountain822

Новичок
сессии и сабдомены

Привет всем,



есть два сабдомена sub1.site.ru и sub2.site.ru


Есть session_start() на каждом из сабдоменов. В php.ini написанно session.cookie_domain = .site.ru


Все сделанно, чтобы сессии на каждом из сабдоменов были одними и те же. Переменная сессии заведенная на одном сабдомене была видна на другом сабдомене. На локалке так и есть.

Переношу это на сервер, а там не работает. Смотрю в брозере куку - написано что поставленна для ".site.ru". Но сессии для каждого сабдомена - своя.


1) sub1.site.ru и sub2.site.ru
2) Файл a.php на sub1.site.ru и файл b.php на sub2.site.ru
3)
a.php:
<?php @session_start(); $_SESSION['test']= 'see ya'; print_R ($_SESSION); ?>

b.php:
<?php @session_start(); print_R ($_SESSION); ?>



Напомню, что в php.ini стоит session.cookie_domain = .site.ru


Кто знает в чем дело?
 

citymountain822

Новичок

Фанат

oncle terrible
Команда форума
мы думаем, что разобраться со своими сессиями можешь только ты сам.
может быть сервер криво настроен. может клиент. а могут руки. выяснить, что именно - твоя задача.

-~{}~ 11.10.07 21:38:

Все работает на локалке. В моем примере все очень просто - нечему глючить.
ты вообще по профессии кто?
 

citymountain822

Новичок
Автор оригинала: *****
мы думаем, что разобраться со своими сессиями можешь только ты сам.
может быть сервер криво настроен. может клиент. а могут руки. выяснить, что именно - твоя задача.
Смотер статьи. Смотрел гугл. Скрипт рабочий, значит сервер - нет. Админ упирается. нужно подтверждение гуру форума, что скрипт рабочий.


1) sub1.site.ru и sub2.site.ru
2) Файл a.php на sub1.site.ru и файл b.php на sub2.site.ru
3)
a.php:
<?php @session_start(); $_SESSION['test']= 'see ya'; print_R ($_SESSION); ?>

b.php:
<?php @session_start(); print_R ($_SESSION); ?>



В php.ini стоит session.cookie_domain = .site.ru
 

Фанат

oncle terrible
Команда форума
Здесь тебе не нотариальная контора. Никаких заключений, кроме как о кривости рук заявителя, здесь не дают.

Дебилов, которым по два раза надо повторять, здесь нет. Свой кривой код достаточно было привести один раз.

Признаков того, что ты "смотрел статью" в тексте твоего вопроса не наблюдается.

Судя по всему, мы в друг друге разочаровались. Чао?
 

citymountain822

Новичок
Автор оригинала: iceman
ты переходишь с домена sub1.site.ru на sub2.site.ru в обоих случаях?
1) Открываю sub1.site.ru. Сессия начинается и создается переменная "test" и показывает эту переменную (print_R ($_SESSION);
2) В брозере вручную открываю sub2.site.ru. Показывает пустой массив сессий(print_R ($_SESSION)).

Все на сервере. А на локалке работает :)
 

citymountain822

Новичок
Дизайнер - декоратор. Читал статьи, честно.



Дайте мне заключение о кривости рук. Заключение с пояснением, в чем они не правы.
 

Фанат

oncle terrible
Команда форума
Дизайнеру можно простить заявления "в моем примере нечему глючить".
просто как программисту тебе можно было бы после таких слов ставить штамп о профнепригодности.

Даю заключение.
1. В протоколе HTTP нет такого понятия - сессии.
сессия делается из более простых операций.
В частности, идентифкатор передается в куках. Вот эти самые куки и надо смотреть. Не файлики на компьютерчике, которые ничего не значат, а куки, как НТТР заголовки.

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

3. Из всех ссылок тебе важнее всего PHP FAQ: Сессии. Возможные проблемы и их устранение.
причем не читать. почему-то все, кто приходит на этот форум с проблемами, радостно заявляют - ЧИТАЛ!!!
И это при том, что там ясно написано, что надо ДЕЛАТЬ. что надо делать, и какую информацию получить. С помощью которой или самостоятельно разобраться, или предоставить её на форум, чтобы мы здесь уже могли хоть какое-то представление о проблеме иметь.
 

citymountain822

Новичок
ФАНАТ

спасибо за заключение

Оттдебагил скрипт по статье и опять, дебаг говорит: скрипт не глючит. Ошибок и предупреждений не выдает.

Вначале куки посылаются сервером. Потом клиент посылает их серверу, при обращении к sub1.site.ru и sub2.site.ru. Идентификатор тот же. Все должно работать. Может сервер глючит?

Вот лог хэдеров:


http://sub1.site.ru/a.php

GET /a.php HTTP/1.1
Host: sub1.site.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7
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: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive

HTTP/1.x 200 OK
Server: nginx/0.3.27
Date: Fri, 12 Oct 2007 06:36:42 GMT
Content-Type: text/html; charset=WINDOWS-1251
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/4.4.4
Set-Cookie: PHPSESSID=28f05300bf6bf1d6ca5e936ad9b54057; path=/; domain=.site.ru
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip
----------------------------------------------------------
http://sub1.site.ru/a.php

GET /a.php HTTP/1.1
Host: sub1.site.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7
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: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: PHPSESSID=28f05300bf6bf1d6ca5e936ad9b54057

HTTP/1.x 200 OK
Server: nginx/0.3.27
Date: Fri, 12 Oct 2007 06:36:51 GMT
Content-Type: text/html; charset=WINDOWS-1251
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/4.4.4
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip
----------------------------------------------------------
http://sub2.site.ru/b.php

GET /b.php HTTP/1.1
Host: sub2.site.ru
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7
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: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Cookie: PHPSESSID=28f05300bf6bf1d6ca5e936ad9b54057

HTTP/1.x 200 OK
Server: nginx/0.3.27
Date: Fri, 12 Oct 2007 06:36:59 GMT
Content-Type: text/html; charset=WINDOWS-1251
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/4.4.4
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Content-Encoding: gzip
----------------------------------------------------------
 

Фанат

oncle terrible
Команда форума
странно. в первой редакции я куку для sub2.site.ru не увидел.
ну ладно, будем считать, что она есть.
тем более, что можно ведь и руками идентификатор передать, чтобы убедиться, что дело не в нем.

вот опять ты остановился. "может быть, сервер глючит". Может быть! Так надо дальше двигаться - узнавать, как именно он глючит. Самому двигаться. А не сидеть, тупить в код, или ждать, что кто-то будет это делать на форуме.

Одно неизвестное мы из задачи удалили - идентификатор куками нормально передается. Надо дальше разбираться.

означают ли твои слова
дебаг говорит: скрипт не глючит.
что:
1. из кода убраны чудовищные собаки, которых ты туда непонятно зачем запихнул
2. ты имеешь четкое представление, где смотреть сообщения об ошибках
3. ты ПРОВЕРИЛ свое четкое представление, где смотреть сообщения об ошибках, намеренно внеся ошибку в скрипт, запустив его, и увидев сообщение об ошибке?
 

citymountain822

Новичок
1. Убранны
2. error.log на каждом сабдомене - чистый. Вывод в брозере - то же без ошибок. Даже когда убрал собак, то оно не ругается на то, что сессия уже стартованна. Странно. Хотя идентификатор не меняется.
3. Да. Ошибок нет.


Редакция:
Конечно, в скриптах стоит
PHP:
ini_set('display_errors',1);
error_reporting(E_ALL);
 

Фанат

oncle terrible
Команда форума
оно не ругается на то, что сессия уже стартованна. Странно.
С какой стати оно будет ругаться-то?

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

ну а записанное на каждом домене в сессию - этому же домену выдается? хоть это-то можно было догадаться проверить самостоятельно?
 

citymountain822

Новичок
Если я записываю в сессию на sub1.site.ru или sub2.site.ru то да, на домене, с которого записало, все видно. Сессия видна. Но на другом сабдомене эта запись не видна.

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


Может быть какой-то мод php мешает нормальной работе с сессиями и сабдоменами? Или nginx сервер может глючить? В каком направлении копать?
 

Фанат

oncle terrible
Команда форума
Конечно, в скриптах стоит
мля.
НЕВАЖНО, что в скриптах стоит.
важны результаты проверки!

то там где написано - может не иметь ни малейшего влияния на ситуацию. и не имеет ни малейшего значения при поиске ошибок!
все "надписи" надо проверять ПРАКТИКОЙ.
написал скрипт с ошибкой - увидел сообщение - убедился: да, я ошибки вижу.

только так.
а не "я в скрипте написал большой код, а он не работает. код верный. в чем проблемаааа?".
проблема в том, что КАЖДУЮ строчку надо проверять, по очереди - то ли она делает, что надо

-~{}~ 12.10.07 11:23:

у тебя эти домены на одном вообще сервере-то?
 

citymountain822

Новичок
Согласен, ошибку поставил - ругается. Убрал ошибку и все тихо.


Редакция:

Да. На одном.





Выглядит так, что в скрипте ошибки нет. Значит дело, вероятно, в сервере? Что может быть не так? В каком направлении смотреть?


PHP: PHP/4.4.4 with Suhosin-Patch

Загруженный модули: mod_realip, mod_cgi, mod_setenvif, mod_unique_id, mod_auth, mod_access, mod_rewrite, mod_alias, mod_dir, mod_autoindex, mod_include, mod_status, mod_negotiation, mod_mime, mod_mime_magic, mod_log_config, mod_env, mod_so, mod_php4, mod_aclr, http_core
 

Фанат

oncle terrible
Команда форума
а под одной учетной записью?
выглядит все это так, как будто скрипт бэ хранит файлы сессий не в том каталоге, что и а.

только не употребляй, пожалуйста, слов, значения которых ты не знаешь, таких, как "мод php".
И, как я уже говорил, на надо спрашивать "что может мешать". ВСЁ! Всё может мешать!
Только проблема в том, что гадать бесполезно, Надо руками разбираться - в чем проблема.

У тебя, кстати, появились данные для предоставления админу.
 

citymountain822

Новичок
Под одной.

У меня только одна идея, как ты сказал, что файлы сессий в разных каталогах. Поговорю с админом.


Но насчет скрипта, здесь не может быть проблем, твое мнение? Ошибок нет, идентификатор передается...
 

Фанат

oncle terrible
Команда форума
если это все под одной учетной записью, то файлы сессий не могут быть в разных каталогах.

каким образом организованы эти субдомены на хостинге?
 
Сверху