Подтвердить что ты не робот

Как проверить, является ли сеанс 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[''] и не проверяет, имеются ли значения в массиве или нет

4b9b3361

Ответ 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.