Отмена сеанса в правильном направлении - PullRequest
0 голосов
/ 05 декабря 2018

Я пытался передать сообщение об ошибке на другую страницу, используя переменную сеанса.На странице обработчика сеанс был инициализирован следующим образом:

function sess() {
    $index = $_POST['name'];
    $_SESSION['error'] = ($index == '') ? 'name cannot be empty' : $index . " is a good name";
    header("Location: http://website-name.com/form");
}; sess();

, а на другой странице что-то вроде:

if(isset($_SESSION['error'])) {
    echo $_SESSION['error']; unset($_SESSION['error']);
};

Теперь, если форма отправляется с пустым полемошибка name cannot be empty становится значением сеанса.После этого, если имя затем установлено, значение сеанса не изменяется, но все равно возвращает name cannot be empty.

Я проверил, имеет ли он какое-то отношение к тому факту, что сеансбыл вызван внутри функции.понятия не имею!но нашел онлайн способ сбросить все переменные, используя session_unset.Но на самом деле это одна переменная сеанса, которую я хочу сбросить, и я нашел что-то вроде session_unset($_SESSION['error']).Тем не менее, его использование не отменяет весь сеанс, но $_SESSION['error'] больше не устанавливается в функции, если я не использую unset($_SESSION['error']), который не завершает первый установленный сеанс.

Так чтона самом деле идет не так?как unset_session() работает по-другому с unset()?какое это имеет отношение к нахождению внутри функции?Насколько я могу вспомнить, $_SESSION[] - это глобальная переменная, аналогичная $GLOBALS[], доступ к которой возможен в любой области.

...