Я пытался передать сообщение об ошибке на другую страницу, используя переменную сеанса.На странице обработчика сеанс был инициализирован следующим образом:
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[]
, доступ к которой возможен в любой области.