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

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Ответить
Smookie
Сообщения: 6
Зарегистрирован: 29 май 2010, 20:01

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

Сообщение Smookie »

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

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

p.s. это очень не удобно для пользователя. заранее, спасибо)))
azzzi
Сообщения: 164
Зарегистрирован: 13 сен 2010, 19:24

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

Сообщение azzzi »

та же проблема возникла...если решил напиши как))
Аватара пользователя
BANAN
Сообщения: 96
Зарегистрирован: 10 мар 2010, 22:24

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

Сообщение 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
Ответить