Удалить session_write_close()
session_write_close()
завершает сеанс:
Завершить текущий сеанс и сохранить данные сеанса.
Любые последующие вызовы $_SESSION
не вернут никаких данных, так как сеанс был записан, а затем закрыт.
Как правило, вы не будете вызывать session_write_close()
до тех пор, пока не выполните перенаправление header('Location: http://example.org')
. Поскольку это не так в вашем коде, вы должны удалить его.
Убедитесь, что вы звоните session_start()
Я предполагаю, что вы вызываете session_start()
на вершине всех ваших сценариев.
Проверь свою сессию
Чтобы проверить, работает ли ваш сеанс, я предлагаю реализовать следующий тестовый скрипт:
<?php
session_start();
$_SESSION['test'] = 'Hello';
echo $_SESSION['test'] . ' World!';
// you should get: Hello World!
Таким образом, вы знаете, что в вашем массиве сеансов определенно что-то есть. В вашем примере кода вы получаете данные из базы данных, которая может возвращать пустые значения.
Сеанс PHP и путаница с хранилищем HTML5
Они не одно и то же. Сессии PHP хранятся на сервере, в то время как браузер хранит сессии HTML5 локально в браузере. HTML5 sessionstorage - это хранилище информации на стороне клиента, которое сохраняется только в течение этого сеанса. См. w3c спецификацию для получения дополнительной информации.
PHP $_SESSION
не сохраняется и не влияет на данные в хранилище сессии HTML5.