PHP将session信息存储到数据库的类实例
这篇文章主要介绍了PHP将session信息存储到数据库的类,实例分析了php封装的session信息存储到数据库的类,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了PHP将session信息存储到数据库的类。分享给大家供大家参考。具体分析如下:
SessionHandlerInterface接口是PHP内置的接口,,直接实现就行了
具体可以看php手册关于session_set_save_handler函数的解释!
PHP代码如下:
复制代码 代码如下:
/**
* session信息存储到数据库的类
* 表结构:
* CREATE TABLE IF NOT EXISTS `sessioninfo` (
* `sid` varchar(255) NOT NULL,
* `value` text NOT NULL,
* `expiration` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
* PRIMARY KEY (`sid`)
* ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
*/
class MySessionHandler implements SessionHandlerInterface {
/**
* @access private
* @var object 数据库连接
*/
private $_dbLink;
/**
* @access private
* @var string 保存session的表名
*/
Private $_sessionTable;
/**
* @access private
* @var string session名
*/
private $_sessionName;
/**
* @const 过期时间
*/
const SESSION_EXPIRE = 10;
public function __construct($dbLink, $sessionTable) {
if(!is_object($dbLink)) {
return false;
}
$this->_dbLink = $dbLink;
$this->_sessionTable = $sessionTable;
}
/**
* 打开
* @access public
* @param string $session_save_path 保存session的路径
* @param string $session_name session名
* @return integer
*/
public function open($session_save_path, $session_name) {
$this->_sessionName = $session_name;
return 0;
}
/**
* 关闭
* @access public
* @return integer
*/
public function close() {
return 0;
}
/**
* 关闭session
* @access public
* @param string $session_id session ID
* @return string
*/
public function read($session_id) {
$query = "SELECT value FROM {$this->_sessionTable} WHERE sid = {$session_id} AND UNIX_TIMESTAMP(expiration) + " . self::SESSION_EXPIRE . " > UNIX_TIMESTAMP(NOW())";
$result = $this->_dbLink->query($query);
if(!isset($value) || empty($value)) {
$value = "";
return $value;
}
$this->_dbLink->query("UPDATE {$this->_sessionTable} SET expiration = CURRENT_TIMESTAMP() WHERE sid = {$session_id}");
$value = $result->fetch_array();
$result->free();
return $value['value'];
}
/**
* 写入session
* @access public
* @param string $session_id session ID
* @param string $session_data session data
* @return integer
*/
public function write($session_id, $session_data) {
$query = "SELECT value FROM {$this->_sessionTable} WHERE sid = '{$session_id}' AND UNIX_TIMESTAMP(expiration) + " . self::SESSION_EXPIRE . " > UNIX_TIMESTAMP(NOW())";
$result = $this->_dbLink->query($query);
$result = $result->fetch_array();
if(!empty($result)) {
$result = $this->_dbLink->query("UPDATE {$this->_sessionTable} SET value = {$session_data} WHERE sid = {$session_id}");
}
else{
$result = $this->_dbLink->query("INSERT INTO {$this->_sessionTable} (sid, value) VALUES ('{$session_id}', '{$session_data}')");
}
if($result){
return 0;
}
else{
return 1;
}
}
/**
* 销魂session
* @access public
* @param string $session_id session ID
* @return integer
*/
public function destroy($session_id) {
$result = $this->_dbLink->query("DELETE FROM {$this->_sessionTable} WHERE sid = '{$session_id}'");
if($result){
return 0;
}
else{
return 1;
}
}
/**
* 垃圾回收
* @access public
* @param string $maxlifetime session 最长生存时间
* @return integer
*/
public function gc($maxlifetime) {
$result = $this->_dbLink->query("DELETE FROM {$this->_sessionTable} WHERE UNIX_TIMESTAMP(expiration)
if($result){
return 0;
}
else{
return 1;
}
}
}
$dbLink = new mysqli("localhost", "root", "root", "test");
$sessionTable = "sessioninfo";
$handler = new MySessionHandler($dbLink, $sessionTable);
session_set_save_handler($handler);
session_start();
$_SESSION['name'] = "test";
echo $_SESSION["name"];
//session_destroy();
希望本文所述对大家的php程序设计有所帮助。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제









PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP에서 데이터베이스 작업은 매우 쉽습니다. 이번 장에서는 CRUD(생성, 읽기, 업데이트, 삭제) 작업을 이해하겠습니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

CakePHP에 로그인하는 것은 매우 쉬운 작업입니다. 한 가지 기능만 사용하면 됩니다. cronjob과 같은 백그라운드 프로세스에 대해 오류, 예외, 사용자 활동, 사용자가 취한 조치를 기록할 수 있습니다. CakePHP에 데이터를 기록하는 것은 쉽습니다. log() 함수는 다음과 같습니다.

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는
