php - 检查 PHP session 是否已经开始

标签 php session session-variables

我有一个 PHP 文件,有时从已启动 session 的页面调用,有时从未启动 session 的页面调用。因此,当我在此脚本上有 session_start() 时,有时会收到“ session 已开始”的错误消息。为此,我写了以下几行:

if(!isset($_COOKIE["PHPSESSID"]))
{
  session_start();
}

但这次我收到了这条警告信息:

Notice: Undefined variable: _SESSION

有没有更好的方法来检查 session 是否已经开始?

如果我使用 @session_start 会不会让事情正常工作而只是关闭警告?

最佳答案

PHP >= 5.4.0、PHP 7、PHP 8 版本的推荐方式

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

引用:http://www.php.net/manual/en/function.session-status.php

对于 PHP < 5.4.0

的版本
if(session_id() == '') {
    session_start();
}

关于php - 检查 PHP session 是否已经开始,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6249707/

相关文章:

java - 无法使用 PHP 运行 shell 函数

PHP session 未在终端中正确显示

.net - sessionState 超时不工作

java - 跨语言和服务器 http session 变量

PHP 计算日期格式已更改的 mysql 行

php - Doctrine 查询中的括号

php - 在 PHP 5.5 中生成密码哈希并设置成本选项

php - 在另一个页面中获取 magento session 变量

php - 从选择查询设置变量

arrays - 迭代数组值并分配给新变量 shell