У меня на сайте сессии, в них логин и пароль пользователя, примерно так выглядит: site.com/index.php PHP: <?php session_start(); //HTML шапки echo $_SESSION['login']; //Выводит логин ?> <iframe src ="http://site.com/patch/" width="900" height="900"> <!-- Это вывод iframe с того же сайта, только другая папка--> site.com/patch/index.php PHP: session_start(); echo $_SESSION['login']; //не выводит логин Можете подсказать почему в site.com/patch/index.php не выводит логин и сессия там вообще пустая?
не помню точно, но нужно настраивать куки, чтобы действавали на весь сайт, а не на фиксированную директорию
а не может быть это от того, что во втором файле инициируется новая сессия? Хотя должно бы ошибку выдать.... Попробуй убрать во втором файле session_start()
centnerik Так вообще NULL выводит. Gromo Я зашёл в папку через адресную строку, куки глянул, там сессия есть, но всёравно выводит пустой массив
MCTrane можно поискать в гугле - там есть ссылки на это. но вначале проверь следующую теорию: 1. PHP: <?php session_start(); идёт самым первым в файле. 2. Нет BOM заголовка у файла 3. Проверь сессии на двух файлах в одной директории 4. если всё вышесказанное соблюдено и работает - ищи в гугле как выставлять путь у кук для всего сайта. но мне кажется, что хватит и первых трёх шагов. четвёртый маловероятно.
Конечно идёт первым. BOM не возможен, у меня кодировка windows 1251. Создал site.com/patch/test.php, там также пустой массив.
И 4 тоже не вариант( Вывел $_COOKIE в site.com/patch/index.php, всё выводит, как и на site.com/index.php
Сессия вроде бы должна и без кук работать... Если сессия есть в куках, может есть смысл подключиться к ней через session_id($_COOKIE['PHPSESSID'])?
MCTrane странно как-то. врядли дело в ифрейме - там должна быть та же сессия. если открываешь файл patch/index.php напрямую из браузера - показывает сессию?
По идее она пустая потому что в path/index.php просто стартует новая сессия. Посмотри выше последний пост, мож получится. Актуальный вопрос, может самому пригодиться. Надо разобраться
Gromo Ну, не выводит тоже... centnerik убрал session_start, оставил только session_id($_COOKIE['PHPSESSID']), NULL стал выводить.
session_id попробуй вызвать без session_start во втором файле PS жалко я не на своем компе, так бы сейчас тоже экспериментировал, а то треплемся без толку )))
MCTrane дело пахнет керосином. нужно разбираться с настройками сервера я тоже придерживаюсь мнения, что в patch/index.php у тебя стартует новая сессия, и проблема скорее всего в настройках пути кук
Вот что в куках: array(2) { ["147f9964d93ba372955402f602050104"]=> string(32) "99cf303b9d8991642a8feac1108123e7" ["PHPSESSID"]=> string(32) "3810ea01c299d81656e3944e3a6f5859" } т.е., только одна сессия.
Получается что новая сессия просто перезатирает сессию в куках... В РНР кажется порядок обработки переменных есть типа GPCS ?
Если бы она перезатиралась, то на сайте была бы тоже пустая сессия получается, а она такой же и остаётся... Порядок обработки, да, вроде GET, POST, Cookie, Server.
В первой файле сессия стартует и пишется в куки, во втором стартует и перезаписывает куки. А как все это в кучу слепить что то не думается. Мож просто отключить куки и попробовать без них ? Хотя это бред... )))
Ну, да, это и было из-за CMS, там может, как то по особенному сессии вкл или ещё что-то, но я решил скопировать из site.com/index.php PHP: <?php $mainframe =& JFactory::getApplication('site'); ?> Ну и чтобы эту функцию подключить надо ещё библиотеки грузануть перед тем, что выше, в общем вот общий код: PHP: <?php define( '_JEXEC', 1 ); $jp = str_replace("/patch","", dirname(__FILE__)); define('JPATH_BASE', $jp ); define( 'DS', DIRECTORY_SEPARATOR ); include ( JPATH_BASE .DS.'includes'.DS.'defines.php' ); include ( JPATH_BASE .DS.'includes'.DS.'framework.php' ); $mainframe =& JFactory::getApplication('site'); ?> Конечно, с такой фигнёй врятле кто столкнётся, но может найдётся избранный, как я) Всем спасибо!
MCTrane Проверил на своем компе, работает на ура... А джумлу даже в глаза не видел, думаю, немного потерял