今日は、データベースはセッション情報を保存しますというコードを紹介します。次のコードをセッションファイルに入れて、session_startで導入するだけです。 () sessiong ファイルだけで十分です。もちろん、session_start() を記述する必要はありません
。これがデータベーステーブルの構造です
それでは、これがコードです
クラスセッション {
プライベート静的$_mysqli;
public static function action() {
ini_set('session.save_handler','user');
session_set_save_handler(array(__CLASS__,'open'),
array(__CLASS__,'close'),
array(__CLASS__,' read'),
array(__CLASS__,'write'),
array(__CLASS__,'destroy'),
array(__CLASS__,'gc'));
@session_start();
}
public static function open( $path,$name) {
self::$_mysqli = new mysqli('localhost','root','','test');
return true;
}
public static function close() {
self ::$_mysqli->close();
return true;
}
public static function read($sid) {
$_query = "SELECT sdata FROM session WHERE sid='{$sid}' LIMIT 1";
$_result = self::$_mysqli->query($_query);
$_sdata = $_result->fetch_object();
return $_sdata->sdata;
}
public static function write($ sid,$sdata) {
$_query = "SELECT sid FROM session WHERE sid='{$sid}' LIMIT 1";
$_result = self::$_mysqli->query($_query);
if (! !$_sid = $_result->fetch_object()) {
$_query = "UPDATE session SET sdata='{$sdata}' WHERE sid='{$sid}'";
self::$_mysqli-> query($_query);
} else {
$_query = "INSERT INTO session (sid,sdata) VALUES ('{$sid}','{$sdata}')";
self::$_mysqli-> query($_query);
}
return true;
}
public static function destroy($sid) {
$_query = "DELETE FROM session WHERE sid='{$sid}' LIMIT 1";
self:: $_mysqli->query($_query);
setCookie(ini_get('session.name'),'',time()-1);
return true;
}
public static function gc($maxlifetime) {
$_query = "DELETE FROM session WHERE NOW()-slasttime>'{$maxlifetime}'";
self::$_mysqli->query($_query);
return true;
}
}
セッション::アクション();