2008-09-01 2 views
5

Я должен создать небольшой веб-сайт для моей группы выпускников, которая размещена моим ISV. URL-адрес похож на www.myIsv.com/myWebSite/, который довольно уродлив и очень забывчив. Главный админ веб-сервер зарегистрировал доменное имя www.mysmallwebsite.com и поставить index.html с этим содержанием:PHP: переменная сеанса неприменима при перенаправлении сайта

<html> 
<head> 
<title>www.mysmallwebsite.com</title> 
</head> 

<frameset> 
    <frame src="http://www.myIsv.com/myWebSite/" name="redir"> 
     <noframes> 
     <p>Original location: 
      <a href="www.myIsv.com/myWebSite/">http://www.myIsv.com/myWebSite/</a> 
     </p> 
     </noframes> 
</frameset> 
</html> 

Он отлично работает, но некоторые функции, такие как переменные PHP Session больше не работает! У кого-то есть предложение исправить это?

Edit: Это не работает как на IE и Firefox (без плагинов)

Благодарности

ответ

4

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

Попробуйте использовать апачские моды рерайт для создания «транзитного Перенаправления», то «прокси» флаг ([P]) в правиле является волшебным флагом, что вам нужно

Документация на http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

0

Что вы имеете в виду? Вы говорите, что когда вы переходите с www.mysmallwebsite.com на www.myIsv.com/myWebSite/, то сеанс PHP теряется?

PHP распознает сеанс с идентификатором (альфа-числовым хешем, сгенерированным на сервере). Идентификатор передается из запроса на запрос с использованием файла cookie под названием PHPSESSID или что-то в этом роде (вы можете просматривать файлы cookie на сайтах с помощью вашего браузера ... на Firefox у вас есть Firebug + FireCookie и замечательная панель инструментов веб-разработчиков. с помощью которого вы можете просмотреть список печеньков без пота).

Итак ... PHP передает идентификатор сеанса через файл cookie PHPSESSID. Но вы можете передать идентификатор сеанса как простой параметр запроса GET.

Так что, когда вы размещаете ссылку HTML для доменного имени уродливой, предполагая, что это тот же PHP-сервер (с теми же сеансов инициализируется), вы можете поместить его, как это ...

www.myIsv.com/myWebSite/?PHPSESSID=<?=session_id()?> 

I не работали с PHP некоторое время, но я думаю, что это сработает.

0

Работают ли переменные сеанса, если вы нажмете http://www.myIsv.com/myWebSite/? Мне кажется, что конфигурация сервера будет определять, будут ли сеансы работать. Однако, если вы каким-то образом начинаете сеанс на www.mysmallwebsite.com (не похоже, что вы используете PHP, но, возможно, и вы), вы не сможете передавать данные сеанса, не записывая некоторые бэкэнд логика, которая перемещает сеанс с сервера на сервер.

0

Включите session_start() в начале вашего скрипта и посмотрите, можете ли вы снова получить доступ к переменным.

0

Это не работает, потому что на клиентских сеансах есть домен. Все файлы cookie сохраняются для mysmallwebsite.com, поэтому myIsv.com не может получить к ним доступ.

0

@ pix0r www.myIsv.com/myWebSite/ -> переменная рабочая сессия www.mysmallwebsite.com -> переменная сеанса не работает

@Alexandru К сожалению, это не на том же веб-сервере

0

Какой у вас браузер/реклама? это может быть ваш браузер или какое-либо другое программное обеспечение (возможно, даже веб-сервер) блокирует сеансы от http://www.myIsv.com/myWebSite/, работая из-в кадре, так как он находится на другом сайте, думая о его атаке XSS.

Если сеанс работает с http://www.myIsv.com/myWebSite/ без рамки, вы всегда можете перенаправить с http://www.mysmallwebsite.com на уродливый URL-адрес, вместо использования фрейма.

EDIT: Я только что попробовал ваш код кадра на моем сайте, который использует сеансы, firefox работал нормально, со мной вход в систему и пребывание в системе, но IE7 снова меня запустил.

0

Так что, когда вы размещаете ссылку HTML для доменного имени уродливой, предполагая, что это тот же PHP-сервер (с теми же сеансов инициализируется), вы можете поместить его, как это ...

www.myIsv.com/myWebSite/?PHPSESSID=<?=session_id()?>

с точки зрения безопасности, я действительно очень надеюсь, что не работает

0

Вы можете также установить куки на стороне пользователя, а затем проверить на наличие этого печенья непосредственно после редиректа, который, если вы беспокоитесь о дружественных URL-адресах, это означает, что вам не нужно передавать PHPSESSID в строке запроса.

0

Когда люди приезжают @ www.mysmallwebsite.com я бы просто перенаправить на http://www.myIsv.com/myWebSite/

<?php header('Location: http://www.myIsv.com/myWebSite/'); ?> 

Это все, что я бы в www.mysmqllwebsite.com/index.php
Таким образом, вы не должны беспокоиться о совместимости с браузером или о погоде в работе сессий, просто сделать redirct, и вы будете хороши.