Как проверить, является ли сеанс PHP пустым?
Является ли эта плохая практика?
if ($_SESSION['something'] == '')
{
echo 'the session is empty';
}
Есть ли способ проверить, является ли его пустым или он не установлен? Я действительно делаю это:
if (($_SESSION['something'] == '') || (!isset($_SESSION['something'])) {
echo 'the session is either empty or doesn\'t exist';
}
Проверяет ли !isset
, существует ли $_SESSION['']
и не проверяет, имеются ли значения в массиве или нет
Ответы
Ответ 1
Я бы использовал isset
и empty
:
session_start();
if(isset($_SESSION['blah']) && !empty($_SESSION['blah'])) {
echo 'Set and not empty, and no undefined index error!';
}
array_key_exists
- хорошая альтернатива использованию isset
для проверки ключей:
session_start();
if(array_key_exists('blah',$_SESSION) && !empty($_SESSION['blah'])) {
echo 'Set and not empty, and no undefined index error!';
}
Убедитесь, что вы вызываете session_start
перед чтением или записью в массив сессии.
Ответ 2
Используйте isset
, empty
или array_key_exists
(особенно для ключей массива), прежде чем обращаться к переменной, существование которой вы не уверены. Поэтому измените порядок во втором примере:
if (!isset($_SESSION['something']) || $_SESSION['something'] == '')
Ответ 3
вы ищете PHP empty()
функция
Ответ 4
Вы можете использовать функцию count(), чтобы узнать, сколько записей в массиве $_SESSION. Это не очень хорошая практика. Вместо этого вы должны установить идентификатор пользователя (или что-то подобное), чтобы проверить, был ли сеанс инициализирован или нет.
if( !isset($_SESSION['uid']) )
die( "Login required." );
(Предполагая, что вы хотите проверить, зарегистрирован ли кто-либо)
Ответ 5
Если вы хотите проверить, доступны ли сеансы, вы, вероятно, захотите использовать функцию session_id()
:
session_id() возвращает идентификатор сеанса для текущего сеанса или пустую строку (""), если текущий сеанс отсутствует (текущий идентификатор сеанса отсутствует).
Ответ 6
if(isset($_SESSION))
{}
else
{}
Ответ 7
Лучше всего проверять, существует ли ключ массива, используя встроенную функцию array_key_exists
.