Изменить значение переменной SESSION - PullRequest
4 голосов
/ 09 августа 2011

Я уже некоторое время пытаюсь понять это, и это сводит меня с ума.В основном у меня есть форма для пользователей из США и Канады.Внизу формы есть ссылка для канадских пользователей, которая направляет пользователей на файл can-sesssion.php, который содержит:

<?php
if (isset($_SESSION['can'])) {
    session_start();
    session_destroy();
    session_unset();
    session_start();
    $_SESSION['can'] = 2;
}
else {
    session_start();
    $_SESSION['can'] = 1;
}
header('Location: '. $_SERVER['HTTP_REFERER'] . '');
?>

Обычно, если они нажимают на ссылку, она устанавливает $ _SESSION ['can '] = 1. Теперь есть другая опция, и если они щелкают по этой ссылке, она возвращает их обратно на эту страницу, и сеанс должен быть уничтожен и установлено новое значение (ну, это то, что он должен делать).Проблема в том, что я распечатал $ _SESSION ['can'], и он все еще сохраняет это старое значение после перехода на эту страницу.Есть ли лучший способ сделать это, или что-то не так с моим кодом?Спасибо за помощь.

Ответы [ 2 ]

8 голосов
/ 09 августа 2011

Вот что вы написали:

if (isset($_SESSION['can'])) {
    session_start();

session_start - это функция, которая считывает файл сеанса, связанный с пользовательским файлом cookie PHPSESSID, и заполняет $_SESSION, поэтому вы пытаетесь прочитать массив, прежде чем он получит какие-либо значения.

Вам нужно позвонить session_start до того, как вы проверите, имеет ли $_SESSION['can'] значение.

Вам также не нужно уничтожать и создавать новый сеанс только для изменения значения.

<?php
session_start();
if (isset($_SESSION['can'])) {
    $_SESSION['can'] = 2;
} else {
    $_SESSION['can'] = 1;
}
header('Location: '. $_SERVER['HTTP_REFERER'] . '');
?>
1 голос
/ 09 августа 2011

Попробуйте: (используя только один session_start())

<?php
session_start();
if (isset($_SESSION['can'])) {
    $_SESSION['can'] = 2;
}
else {
    $_SESSION['can'] = 1;
}
header('Location: '. $_SERVER['HTTP_REFERER'] . '');
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...