Я не могу понять, почему мои переменные сеанса PHP перезаписываются при перенаправлении страницы - PullRequest
1 голос
/ 29 июня 2011

У меня есть страница, использующая переменные сеанса, которые создаются из формы ввода пользователя методом POST. Переменные сеанса создаются правильно с использованием этого кода:

(я собираю почтовый индекс с помощью ввода в форму)

<form name="zipinput" id="zipform" method="post" action="" target="_blank" onsubmit="return valZip();"/>     
 <input id="zip" name="zip" class="zipfield" type="text" value="" />
 </form> 

Вот мой PHP-код:

$_SESSION['zip'] = $_POST['zip'];
if(isset($_SESSION['zip'])) {
$zipcode = $_SESSION['zip'];
}

Это отлично работает. Но когда я иду от page1.php к page2.php, переменные стираются. Я думал, что весь смысл переменных сессии заключается в возможности использовать их от страницы к странице без _GET или _POST в URL. Я также в том числе: session_start (); наверху моих страниц php.

Любые идеи будут с благодарностью! Спасибо.

Ответы [ 4 ]

3 голосов
/ 29 июня 2011

Это потому, что вы назначаете значение сеансу независимо от того, было ли на самом деле предоставлено значение zip. Если не параметр zip является presesnt, вы просто пишете пустым, который стирает предыдущий zip. Вы хотели бы сделать:

if (isset($_POST['zip'])) {
   $_SESSION['zip'] = $_POST['zip'];
}
$zip = $_SESSION['zip'];
1 голос
/ 29 июня 2011
if(isset($_POST['zip'])
$_SESSION['zip'] = $_POST['zip'];
if(isset($_SESSION['zip'])) {
$zipcode = $_SESSION['zip'];
}
0 голосов
/ 29 июня 2011

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

Если вы этого не сделаете, сеанс, который вы сохранили, будет уничтожен при перенаправлении страницы.

0 голосов
/ 29 июня 2011

вместо просто session_start () вверху страницы, попробуйте иметь

if(!isset($_SESSION)):
    session_start();
endif;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...