是否有一个简短的代码技巧来检查 session 是否已开始,如果没有,则加载一个 session ?当前,如果我不考虑检查就进行了 session 启动,则会收到错误消息“ session 已开始...”。
最佳答案
isset
通常是检查当前是否定义了预定义变量的正确方法:
如果您使用的是5.4 之前的php版本,
您通常可以通过下面的代码来摆脱它的诱惑,但是请注意,如果由于某些原因禁用了 session ,则仍将调用session_start(),由于$ _SESSION数组不存在,最终可能会导致错误和不必要的调试不允许创建。
if(!isset($_SESSION)){session_start();}
如果要考虑检查是否由于某些原因禁用了 session ,则可以禁止显示错误消息,设置测试 session 变量,然后验证是否已设置。如果不是,则可以在响应中编写禁用 session 的代码。您需要在脚本开始时或在脚本开始时执行所有这些操作。因此,例如(根据错误处理设置的不同,工作方式也不同):if(!isset($_SESSION)){session_start();}
$_SESSION['valid'] = 'valid';
if($_SESSION['valid'] != 'valid')
{
//handle disabled sessions
}
但是,如果您使用的是php 5.4或更高版本,您可以使用session_status()函数,这是一个更好的选择,因为它可以解决 session 被禁用并检查 session 是否已存在的问题。
if (session_status() === PHP_SESSION_NONE){session_start();}
注意 PHP_SESSION_NONE 是PHP设置的常量,因此不需要用引号引起来。它的计算结果为整数1,但作为其常量(专门设置为消除对魔数(Magic Number)的需要),最好针对该常量进行测试。关于php - 仅在 session 不存在时才加载session_start()吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10093264/