0
デフォルトの管理PHPセッションでページを更新した場合、セッションは常に同じです。このクラスを使用してセッションをDBに保存すると、 ページを更新するたびにセッションが変更されます。ページを更新すると、なぜphpのセッションが変わるのですか?
なぜですか?それは普通ですか?
class SessionPDO implements SessionHandlerInterface
{
private $db;
public function __construct($pdo)
{
$this->db = $pdo->getHandler();
session_set_save_handler($this, true);
$this->startSecureSession();
}
public function startSecureSession()
{
session_name("session_name");
session_set_cookie_params(
7200, //expiration - 0 is when browser closes
'/', //path over which cookies will be sent
null, //domain for cookie to operate
true, //Secure cookie HTTPS only
true //HTTP Only/No Javascript access
);
$this->setSecureConfig();
session_start();
}
public function setSecureConfig()
{
ini_set('session.use_only_cookies', 1);
ini_set('session.cookie_httponly', 1);
ini_set('session.cookie_secure', 1);
ini_set('session.hash_function', 'sha256');
ini_set('session.hash_bits_per_character', 6);
ini_set('session.entropy_file', '/dev/urandom');
ini_set('session.entropy_length', 1024);
ini_set('session.use_trans_sid', 0);
}
public function open($path, $sessionName)
{
// open code
}
public function close()
{
// close code;
}
public function read($sessionID)
{
// read code
}
public function write($sessionID, $data)
{
// write code
}
public function destroy($sessionID)
{
// destroy code
}
public function gc($max)
{
// gc code
}
}
安全な接続を使用していない各要求に異なっているものを、「変更」を定義しますか? – Oldskool
@OldskoolセッションIDが変更されます。デフォルトのPHPセッションでは、ページを5回リフレッシュすると、sessionIDは常に同じになります。私のクラスno:私はページを5回リフレッシュする場合、私は5つの異なるsessionIDを持っています。 – Webman