Сессии 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 с букв и сделать их более наглядными. Это делает ваш код более читабельным и легким для понимания

Причиной такого поведения являются объявления переменных Си. Поскольку имена переменных не могут начинаться с цифры.

Другие вопросы по тегам