我的php会议显示出异常行为.情况:
(https://example.com)应用程序https)以下是我开始会议的方式:
if(!$this->session_manager_issession_set()) {
$this->set_ini_config();
session_name($this->session_manager_name);
session_set_cookie_params($this->session_cookie_life, "/"); //Required for browser cookie cleanup
}
session_start();
if(empty($_SESSION))
{
$output['status'] = false;
}
else{
// Fetch the variables
}
public function session_manager_issession_set(){
$output = true;
$session_status = session_status();
switch($session_status){
case PHP_SESSION_ACTIVE :
break;
default:
$output = false;
}
return $output;
}
private function set_ini_config(){
$output = true;
ini_set('session.gc_probability', 1); //If session expires then ensure that session is flushed and cleared at all instances
ini_set('session.gc_divisor', 100); //If session expires then ensure that session is flushed and cleared at all instances
ini_set('session.gc_maxlifetime', 7*24*60*60); //MAx life of session cookie
ini_set('session.cookie_secure', true);
return $output;
}
Run Code Online (Sandbox Code Playgroud)
这可能是什么原因?我是否以错误的方式实施了会话?
正如您在问题和评论中提到的,用户不仅移动到不同的域,而且完全移动到不同的服务器(因此从 到 的更改http对https我们读者来说更有意义)。是保存在服务器上的$_SESSION超全局变量,因此更改服务器是您的价值被破坏的最可能原因。$_SESSION
事实上,它可能仍然存在,但由于您尝试从不同的服务器访问它,服务器找不到它,因此导致您(或服务器)相信它已被破坏(因为它存在于原始服务器上)启动会话的服务器)。这可以解释为什么它有时有效有时无效,因为您可能在服务器之间切换,有时您很幸运并且位于最初创建会话的同一服务器上。
| 归档时间: |
|
| 查看次数: |
225 次 |
| 最近记录: |