我有第三方脚本,并想知道如果在做某事之前已宣布PHP
,我如何与session_start()
核对?
something like if(isset($_session_start())) { //do something }
答案 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