如何检查一个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'; }
is !isset
只是检查$_SESSION['']
存在,并不检查数组中是否有值
我会用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
检查密钥的不错select:
session_start(); if(array_key_exists('blah',$_SESSION) && !empty($_SESSION['blah'])) { echo 'Set and not empty, and no undefined index error!'); }
确保在读取或写入会话数组之前调用session_start
。
在访问存在不确定的variables之前,使用isset
, empty
或array_key_exists
(特别是数组键)。 所以在第二个例子中改变顺序:
if (!isset($_SESSION['something']) || $_SESSION['something'] == '')
你正在寻找PHP的empty()
函数
您可以使用count()函数来查看$ _SESSION数组中有多less个条目。 这不是很好的做法。 您应该设置用户(或类似的)的ID来检查会话是否被初始化。
if( !isset($_SESSION['uid']) ) die( "Login required." );
(假设你想检查是否有人login)
如果你想检查会话是否可用,你可能需要使用session_id()
函数:
如果没有当前会话(不存在当前会话ID),session_id()将返回当前会话的会话标识或空string(“”)。
if(isset($_SESSION)) {} else {}
这不是一个坏习惯。 但是你可能会得到一个错误
未定义的索引(您定义的键)
所以最好的做法是使用内置的array_key_exists
函数来检查数组键是否存在。