Сессии PHP не сохраняются
У меня есть обе страницы, но $_SESSION["1"]
не получен во втором.
Мой вопрос не имеет ничего общего с "данными сеанса PHP не сохраняются", перестаньте помечать их как дубликаты!
ОБНОВЛЕНИЕ: Оказывается, что если я наберу номер в сеансе, он не будет работать. Я набрал нормальную строку и работал.. Я никогда не видел, чтобы это произошло
первый
<?php
session_start();
$_SESSION["1"] = "LOGGED";
?>
второй
<?php
session_start();
echo $_SESSION["1"];
?>
Почему это не работает?
3 ответа
Переменные сеанса с одним номером не будут работать, однако 1a
будет работать, как будет a1
и даже просто одно "письмо" a
тоже будет работать.
первый
<?php
session_start();
$_SESSION["a1"] = "LOGGED";
?>
второй
<?php
session_start();
echo $_SESSION["a1"];
?>
Пример из руководства PHP.net по переменным сеанса
<?php
$_SESSION[1][1] = 'cake'; // fails
$_SESSION['v1'][2] = 'cake'; // works
?>
Источник: http://php.net/manual/en/language.types.array.php
РЕДАКТИРОВАТЬ:
- Согласно
bob-the-destroyer
комментарий:
Чтобы добавить относительно ключей массива, из http://php.net/manual/en/language.types.array.php "Строки, содержащие допустимые целые числа, будут преобразованы в целочисленный тип". В руководстве по $_SESSION написано "Ассоциативный массив". Значит, ассоциативный массив ожидается буквально...? Никому не поможет, если эта важная информация о доступе и хранении данных сеанса останется скрытой в ручных комментариях.
Вы можете назначить ваши $ _SESSION именам, которые определяют назначение $ _SESSION, например. $_SESSION['logged'] = logged; Не забудьте начать свои $ _SESSIONS с букв и сделать их более наглядными. Это делает ваш код более читабельным и легким для понимания
Причиной такого поведения являются объявления переменных Си. Поскольку имена переменных не могут начинаться с цифры.