2013-02-23 2 views
0

Я долгое время боролся с этим, и я читал десятки сообщений, относящихся к нему, но ничто не помогло мне это решить.Сессия завершается после перенаправления динамического заголовка

У меня есть чек настроить так, если вы не вошли в мой сайт, он посылает вас на страницу входа с $_GET переменной, содержащей информацию, необходимую для перенаправлены обратно после успешного входа в систему.

На странице входа в систему я отправил HTML-форму в файл «checklogin.php», чтобы войти в систему, если имя пользователя и пароль совпадают с базой данных (я также передаю исходную переменную $_GET для перенаправления в качестве переменной $_POST на этот раз чтобы сохранить «хлебные крошки»). Если информация о входе совпадает, я запускаю сеанс и назначаю переменные сеанса с некоторой информацией о пользователе.

В нижней части страницы, после успешного входа в систему, я делаю это, чтобы вернуться туда, где они были раньше:

$go = "http://something/page.php?id=".$_POST['breadcrumb']; 
header($go); 

Это работает ... сначала (переменная сеанса успешно передается page.php). Но затем на следующей странице пользователь нажимает, чтобы перейти к концу сеанса, и он/она больше не выполнили вход.

Так разочаровывает! session_start() находится в верхней части каждой страницы. И сеанс успешный, когда пользователь просто входит в систему без перенаправления динамического заголовка (без $_POST['breadcrumb']).

Я пробовал много разных решений, и ничто не устраняет эту проблему.

ответ

0

Проблема заключалась в том, что я не сохранял перенаправления URL-адресов на всем сайте. Иногда мне приходилось

www.website.com/home.php 

и иногда я имел

/home.php 

который зажмурил $ ​​SESSION.

Решение заключалось в том, чтобы мой заголовок перенаправлял все подряд без (или все последовательно) «www.website.com» в начале URL-адреса.

0

Вы проверили весь код, чтобы убедиться, что там где-то нет разрушения сеанса? Вы также можете попробовать использовать $ _SERVER ['REQUEST_URI']; чтобы получить URL-адрес перенаправления, просто вставьте его в код заголовка, чтобы он был таким.

header("location: <breadcrumb>); 
Смежные вопросы