Страница 1 из 1

iFrame Приложения - Проблема с Cookies (куками, сессией)

Добавлено: 31 май 2010, 14:45
Smookie
При первой загрузке приложения, я сразу стартую сессию.
И все хорошо в некоторых браузерах.
А в некоторых нет ( Safari, IE, Opera ).
В настройках браузера cookies обычно стоит - Приниамать куки от посещенных сайтов.
(если поставить Принимать Cookies всегда - то все отлично, но это не выход)
Но iFrame - это для браузера окошко неизвестно с чем и он в целях безопасности не принимает куки (сессия не работает), пока ты сам там что-нибудь не нажмешь.
Я ввел кнопку-ссылку перезагрузить ( на тот-же Index.php ) внутри фрейма - нажимая ее все становиться ок. ( но это жутко бесит )

Есть ли другое решение? Прошу вашей помощи.

p.s. это очень не удобно для пользователя. заранее, спасибо)))

Re: iFrame Приложения - Проблема с Cookies (куками, сессией)

Добавлено: 16 сен 2010, 20:16
azzzi
та же проблема возникла...если решил напиши как))

Re: iFrame Приложения - Проблема с Cookies (куками, сессией)

Добавлено: 20 сен 2010, 08:29
BANAN
Не знаю поможет, не поможет этот пост вам....вот нашел в группе по IFrame-приложениям....

7. Почему не работает PHP-сессия / не устанавливаются сооkiе?
Если речь идет об Internet Explorer, то скорее всего это связано с P3P-политиками. Простое решение, выкинуть следующий заголовк в PHP-файле:
header('P3P: CP="NOI ADM DEV PSAi COM NAV OUR OTRo STP IND DEM"');

Подробнее по теме:
http://devtown.ru/blog/code/33.html
http://forum.dklab.ru/viewtopic.php?p=126361#126361
http://saizai.livejournal.com/897522.html
http://anantgarg.com/2010/02/18/cross-d ... in-safari/

Если речь идет о Safari или Opera, особенно последних версий, то это скорее всего связано с настройками безопасности этих браузеров. В новых версиях по умолчанию после установки ставится настройка "принимать сооkiеs только с посещенного сайта".
Существует 2 решения этой проблемы. Первый, это некий хак, заставить браузер считать сайт посещенным - инициировать отправку формы javascript-ом сразу же после загрузки приложения. Но за вечную работоспособность такого решения мы не поручимся, поэтому настоятельно рекомендуем второй - отказ от передачи id сессии через сооkiеs и передача его в url. В php.ini для этого служит флаг session.use_trans_sid.

Советы, если таки сессии не работают и в других браузерах:
Включить отображение ошибок PHP (ini_set("display_errors", "on") и error_reporting(E_ALL)) или соотв. флаги в php.ini
Проверить, что не забыли написать session_start();
Проверить чтобы перед session_start(); не было никакого вывода контента, сессия ставит куку а значит выдает заголовок, заголовок должен быть выкинут всегда перед выводом контента, т.е. до первого echo.
Проверить права на запись в папку для сохранения сессий, по умолчанию в UNIX это /tmp, но может быть изменена ф-цией PHP ini_set('session.save_path', $path); или соотв. директива в php.ini