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

时间:2009-11-24 06:24:23

标签: php

我有第三方脚本,并想知道如果在做某事之前已宣布PHP,我如何与session_start()核对?

something like if(isset($_session_start())) { //do something } 

9 个答案:

答案 0 :(得分:38)

if(!isset($_SESSION)) {
     session_start();
}

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

答案 1 :(得分:28)

与PHP> = 5.4.0一样,你有函数session_status()告诉你它是否已经初始化或是否被禁用。

例如,你可以这样做:

if (session_status() == PHP_SESSION_NONE) {
  session_start();
}

您可以在http://www.php.net/manual/en/function.session-status.php

中详细了解相关信息

答案 2 :(得分:13)

我想你可以使用session_id函数:

  

session_id()返回会话ID   对于当前会话或空   如果没有电流,则为字符串(“”)   会话(没有当前会话ID   存在)。

或者测试$_SESSION是否设置,使用isset,可能会起作用,因为它不应该在没有会话启动时设置 - 你只需要希望没有在没有首先开始会话的情况下将任何内容分配给$_SESSION

答案 3 :(得分:7)

for php> = 5.4.0

if (session_status() == PHP_SESSION_NONE) {
session_start();
}

for php< 5.4.0

if(session_id() == '') {
session_start();
}

答案 4 :(得分:2)

if(isset($_SESSION)) {
    // do something
}

答案 5 :(得分:1)

function session_started(){ return !!session_id(); }

答案 6 :(得分:0)

如果会话已经开始, 错误:"致命错误:无法在写入上下文中使用函数返回值"

试试这个:

$session = session_id();
if(empty($session)){ 
    session_start();
}

答案 7 :(得分:0)

我刚为它写了一个简单的函数。

  function isSessionStart ()
  {
    if (version_compare(phpversion(), '5.4.0', '<')) {
      if(session_id() == '') {
        return false;
      }
      return true;
    }
    else {
      if (session_status() == PHP_SESSION_NONE) {
        return false;
      }
      return true;
    }
  }

答案 8 :(得分:-1)


    if(defined('SID'))
        // do