如何检查PHP会话是否已经开始?

在PHP中,我们利用一个内置函数session_start()来启动会话。但是,PHP脚本中面临的问题是,如果我们多次执行它会引发错误。因此,在这里我们将学习如何在不调用session_start()函数两次的情况下检查会话是否启动。

有两种方法可以解决此问题。

对于低于PHP 5.4.0的版本。

示例

<?php
   if(session_id() == ''){
      session_start();
   }
?>

说明

如果会话未启动,则以上这段代码将始终在PHP脚本中启动会话。

在第二种方法中,我们可以利用函数session_status()来返回当前会话的状态。该函数可以返回三个整数值,它们都是预定义的常量。这些是:

  • 0 – PHP_SESSION_DISABLED:当前禁用会话。

  • 1 – PHP_SESSION_NONE:启用了会话,但尚未启动任何会话。

  • 2 – PHP_SESSION_ACTIVE:启用了会话并已启动会话。

例:

<?php
   if (session_status() == PHP_SESSION_NONE) {
      session_start();
   }
?>

说明

上面的代码检查会话是否已启动,如果尚未启动,则将在PHP脚本中启动会话。

注意

session_status()函数仅在PHP 5.4.0版本或更高版本中运行。