내가 데이터베이스에서 세션 데이터를 저장하고 읽어 사용자 지정 세션 처리기 사용 : 사용자가 로그인 한 경우PHP는 세션이 무작위로
class c_session implements SessionHandlerInterface {
private $db; // Database
// Constructor
public function __construct($database){
$this->db = $database;
session_set_save_handler(
array($this, 'open'),
array($this, 'close'),
array($this, 'read'),
array($this, 'write'),
array($this, 'destroy'),
array($this, 'gc')
);
register_shutdown_function('session_write_close');
}
// Custom made session start
public function start_session() {
global $globals; // Included in config.php
// Make sure the session cookie is not accessible via javascript.
$httponly = true;
// Force the session to only use cookies, not URL variables.
ini_set('session.use_only_cookies', 1);
// Get session cookie parameters and set the parameters
$cookieParams = session_get_cookie_params();
session_set_cookie_params($cookieParams["lifetime"], $cookieParams["path"], $cookieParams["domain"], $globals['https'], $httponly);
// Change the session name
session_name($globals['session_name']);
// Now we can start the session
session_start();
}
...
모든 웹 페이지에서를, 내가 확인하는 세션을 읽어
function signin_check($db, $session) {
global $globals; // Included in config.php
$session->start_session();
try {
// Check if all session variables are set
if(isset($_SESSION['A'], $_SESSION['B'])) {
...
그녀가 로그인하지 않은 경우, 그녀는 로그 아웃됩니다.
변수 $_SESSION['A']
및 $_SESSION['B']
은 로그인 페이지에서 설정됩니다.
시스템은 완벽하게 99 %의 시간 동안 작동하지만 때로는 웹 페이지를 변경할 때 임의로 로그 아웃됩니다. 이는 (알려진) 이유가없는 경우 $_SESSION['A']
및 $_SESSION['B']
이 설정되어 있지 않기 때문에 발생합니다.
왜 이러한 로그 아웃을 방지 할 수 있습니까?
언뜻보기에 세션이 끝난 것처럼 들립니다. php.ini 설정을 검사 할 수 있다면 session.cookie_lifetime과 session.gc_maxlifetime에 무엇이 설정되어 있는지 알 수 있습니까? – Raf