是否有一个简短的代码技巧来检查会话是否已启动,如果没有,则加载一个?目前我收到错误"会话已经开始..."如果我进入会话启动而不管检查.
Roo*_*ter 36
isset 通常是检查当前是否定义了预定义变量的正确方法:
如果您使用5.4之前的PHP版本,
你通常可以通过下面的代码来逃避和诱惑它,但要注意,如果由于某种原因禁用了会话,仍然会调用session_start(),这可能最终导致错误和不必要的调试,因为$ _SESSION数组不是不允许创建.
if(!isset($_SESSION)){session_start();}
Run Code Online (Sandbox Code Playgroud)
如果您想考虑检查是否由于某种原因禁用了会话,您可以抑制错误消息,设置测试会话变量,然后验证它是否已设置.如果不是,您可以为禁用的会话编写代码.您希望在脚本开头或附近完成所有这些操作.以此为例(根据错误处理设置的不同而有所不同):
if(!isset($_SESSION)){session_start();}
$_SESSION['valid'] = 'valid';
if($_SESSION['valid'] != 'valid')
{
//handle disabled sessions
}
Run Code Online (Sandbox Code Playgroud)
但是,如果您使用的是PHP 5.4或更高版本,
您可以使用session_status()函数,这是一个更好的选项,因为它会占用被禁用的会话,并检查会话是否已存在.
if (session_status() === PHP_SESSION_NONE){session_start();}
Run Code Online (Sandbox Code Playgroud)
请注意,PHP_SESSION_NONE是PHP设置的常量,因此不需要用引号括起来.它的计算结果为1,但由于它是一个专门设置为消除对幻数的需要的常量,因此最好对常数进行测试.
许多人只是@session_start()用来抑制会话已经启动的警告.替代方案通常是:
if (session_status() === PHP_SESSION_NONE) session_start();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
30417 次 |
| 最近记录: |