我如何检查是否已输入session_start?

iad*_*ign 21 php

我有一个第三方脚本,并想知道如何在做某事之前确认PHP是否session_start()已经宣布?

something like if(isset($_session_start())) { //do something } 
Run Code Online (Sandbox Code Playgroud)

小智 40

if(!isset($_SESSION)) {
     session_start();
}
Run Code Online (Sandbox Code Playgroud)

检查将允许您保持当前会话处于活动状态,即使它是一个环回提交应用程序,如果数据输入不正确,或者在继续执行下一个程序之前在程序中有其他检查和平衡,则计划重新使用该表单.

  • 我建议使用`if(session_id()=='')`,因为在会话结束时可以设置`$ _SESSION`. (9认同)

Pho*_*ixS 30

与在PHP> = 5.4.0中一样,您有函数session_status(),它告诉您它是否已初始化或是否已禁用.

例如,您可以这样做:

if (session_status() == PHP_SESSION_NONE) {
  session_start();
}
Run Code Online (Sandbox Code Playgroud)

您可以在http://www.php.net/manual/en/function.session-status.php中阅读更多相关信息


Pas*_*TIN 13

我想你可以使用这个session_id功能:

session_id() 如果没有当前会话(不存在当前会话ID),则返回当前会话的会话ID或空字符串("").

或者也许可以测试是否$_SESSION设置isset,可能会这样做,因为它不应该在没有启动会话时设置 - 你只需要在$_SESSION没有首先启动会话的情况下分配任何内容.


小智 7

对于php> = 5.4.0

if (session_status() == PHP_SESSION_NONE) {
session_start();
}
Run Code Online (Sandbox Code Playgroud)

对于php <5.4.0

if(session_id() == '') {
session_start();
}
Run Code Online (Sandbox Code Playgroud)


Rob*_*Rob 2

if(isset($_SESSION)) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)