我有一个PHP类,我正在创建,它将与$_SESSION
超级全局一起工作,但是进一步思考工作环境。我决定在调用类时不使用__construct
启动会话,而是将其保留为:$Class->init();
。
我希望该类能够迁移到已经调用session_start
的网页...再次,将session_start()
退出构造函数。我的守则如下:
class Session {
protected $Session_Started = false;
public function init(){
if ($this->Session_Started === false){
session_start();
$this->Session_Started = true;
return true;
}
return false;
}
public function Status_Session(){
$Return_Switch = false;
if (session_status() === 1){
$Return_Switch = "Session Disabled";
}elseif (session_status() === 2){
$Return_Switch = "Session Enabled, but no sessions exist";
}elseif (session_status() === 3){
$Return_Switch = "Session Enabled, and Sessions exist";
}
return $Return_Switch;
}
/*Only shown necessary code, the entire class contents is irrelevant to the question topic */
显示代码..显然我正在验证会话是否先前通过两种方法调用,内部引用:$this->Session_Started
等于true
或{{1} }
我正在调用false
并验证回复。
早一点,我说我希望它迁移到可能已经调用session_status()
的网站,验证会话是否已被调用的最佳方法是什么?..我想要的最后一件事要做的这个类,是在导入和初始化类
答案 0 :(得分:1)
您需要将其与“会话已开始”检查结合起来。
public function init()
{
if ($this->Session_Started) {
return true;
}
if (session_status() === PHP_SESSION_ACTIVE) {
$this->Session_Started = true;
return true;
}
if ($this->Session_Started === false) {
session_start();
$this->Session_Started = true;
return true;
}
return false;
}
或者在构造函数中:
public function __construct()
{
if (session_status() === PHP_SESSION_ACTIVE) {
$this->Session_Started = true;
}
}