Проблемы с сессиями и фреймами

Добрый день!

У меня есть веб-сайт, который позволяет вам войти в систему и использовать стороннее приложение через Iframe. Однако, как только они завершают работу со своим приложением, оно перенаправляется на наш сайт внутри iframe, только когда пользователь перенаправляется на наш сайт из iframe, они не входят в систему внутри iframe. Как лучше всего перенести сеанс с хоста в Iframe?

Пока у меня внутри iframe www.test.com?sid=34324vcsd3, который, я считаю, отлично работает. однако всякий раз, когда они направляют, они перенаправляют меня на www.mysite.com/page, который в настоящее время не зарегистрирован через Iframe. Несмотря на то, что я вошел в систему через страницу хоста, я не вошел в систему через Iframe.

Я думаю, что у меня есть два варианта 1. Найдите способ поделиться сеансом с Iframe.

or

2 найти способ использовать HTTP_Referer для извлечения идентификатора сеанса из страницы iframe перед передачей.

например, меня отправляют с test.com?sid=3d3er3e3 на www.test.com/page, где test.com/page вызывает HTTP_referer. Я могу успешно получить test.com?sid=3d3er3e3, но не знаю, как извлечь SID

Что бы вы порекомендовали, ребята? Можно ли поделиться сеансом с IFrame? или есть способ вытащить идентификатор сеанса из строки http_referer?

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


person Robert Dickey    schedule 18.06.2013    source источник
comment
Я рекомендую никогда не использовать iframes.   -  person    schedule 19.06.2013
comment
Спасибо за совет - но избавляться от iframe не вариант. это очень простое приложение, но для нас было бы слишком дорого, если бы стороннее приложение изменило его работу.   -  person Robert Dickey    schedule 19.06.2013


Ответы (1)


Насколько я могу судить, вы пытаетесь передать информацию о сеансе через переменную GET вместо использования файлов cookie браузера. Прочтите руководство PHP по сеансам здесь: http://php.net/manual/en/book.session.php

Быстрое и простое объяснение того, как работают сеансы, заключается в том, что вы можете сделать это на одной странице:

<?
session_start();
$_SESSION['username'] = "foobar";
?>

... и затем это на другой странице:

<?
session_start();
echo $_SESSION['username'];
?>

... и на второй странице будет отображаться «foobar», независимо от того, откуда пришел пользователь (если он уже посетил первую страницу хотя бы один раз).

person Chris    schedule 18.06.2013
comment
Спасибо за помощь, но пока проблема в том, что, несмотря на то, что вы вошли в систему на странице хоста (странице, содержащей Iframe), переменные сеанса должны передаваться на веб-сайт через Iframe. например, если я войду на свой сайт, перейду на страницу моей учетной записи моего веб-сайта, а затем попытаюсь открыть страницу моей учетной записи через Iframe, мой сеанс внутри Iframe не будет существовать, пока я снова не войду в систему. - person Robert Dickey; 19.06.2013
comment
@RobertDickey, конечно, нет, они зависят от домена по очевидным соображениям безопасности. - person ; 19.06.2013
comment
Дагон, я знаю об этом, поэтому я пытаюсь найти обходной путь. - person Robert Dickey; 19.06.2013
comment
@RobertDickey, если бы существовал обходной путь для сайта A, читающего файлы cookie сайта B, кто бы его использовал? - person ; 19.06.2013
comment
Может быть, я неправильно понял. Когда вы говорите, что у меня есть веб-сайт, который позволяет вам входить в систему и использовать стороннее приложение через iframe, вы имеете в виду, что они входят на ВАШ сайт или на сторонний сайт в iframe? Если они войдут на ваш сайт, нет никаких причин, по которым переменная сеанса, которую вы установили во время входа в систему, не будет существовать, когда iframe вернется на ваш сайт в конце процесса. Если они входят на сторонний сайт, вам придется поговорить со сторонней компанией о передаче идентификационной информации, если они еще этого не сделали. - person Chris; 19.06.2013
comment
моя вина. Они входят на МОЙ сайт и получают доступ к Iframe со страницы моего сайта. Этот Iframe — это просто общее приложение, которое они используют, и когда они закончат работу с приложением. они перенаправляли из своего приложения на нашу страницу, оставаясь при этом в iframe. Проблема в том, что когда они перенаправляются внутри этого фрейма, они, похоже, не вошли в систему. Например, если я вхожу на свой сайт, использую приложение Iframe, после завершения веб-страница внутри iframe перенаправляется на наш сайт . При перенаправлении на наш сайт у них нет активного сеанса, и им предлагается войти в систему. - person Robert Dickey; 19.06.2013
comment
Тогда они все еще должны быть зарегистрированы в iframe. Это не должно иметь ничего общего с тем, какие страницы они просматривали в iframe, прежде чем вернуться на ваш сайт. Если вы создаете другой iframe, который просто переходит непосредственно на страницу с проблемами (ту, что на вашем сайте, на которую посетители попадают в iframe), не посещая стороннюю, значит, у вас все еще есть та же проблема? Попробуйте опубликовать код, который вы используете для их входа в систему, и код, который вы используете для проверки того, вошли ли они в систему. - person Chris; 19.06.2013
comment
Ты прав. Он работает правильно, когда я открываю свою страницу в iframe. позвольте мне опубликовать мой код. - person Robert Dickey; 19.06.2013