当前位置:网站首页>PHP saves session data to MySQL database
PHP saves session data to MySQL database
2022-07-06 20:53:00 【hello php】
session_set_save_handler() Use cases of methods
sql The statement is as follows :
CREATE TABLE `session` (
`id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT,
`data` varchar(255) DEFAULT NULL,
`lapse_time` timestamp NULL DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=latin1;
The code is as follows :
<?php
/**
* Reference resources : http://c.biancheng.net/view/8192.html
*/
// Connect to database
function sess_open($savePath, $sessionName)
{
echo "sess_open() Method <br/>";
global $link;
$link = mysqli_connect('localhost', 'root', 'root') or die(' Database connection failed !');
mysqli_select_db($link, 'test') or die(' The database was not found !');
return true;
}
// Close database connection
function sess_close()
{
echo "sess_close() Method <br/>";
global $link;
mysqli_close($link);
return true;
}
// Read Session Content
function sess_read($sessionId)
{
echo "sess_read() Method <br/>";
global $link;
$time = time();
$sql = "SELECT data FROM session WHERE id = '$sessionId' AND lapse_time > '$time'";
$result = mysqli_query($link, $sql);
$row = mysqli_fetch_array($result, MYSQLI_ASSOC);
if ($row) {
// return $row['data'];
return serialize($row['data']);// pit !!! Need to serialize
} else {
return serialize(false);// pit !!! Need to serialize
}
}
// write in Session
function sess_write($sessionId, $data)
{
echo "sess_write() Method <br/>";
global $link;
$lapse_time = time() + (60 * 60);
$sql = "SELECT data FROM session WHERE id = '$sessionId'";
$result = mysqli_query($link, $sql);
if (mysqli_num_rows($result) == 0) {
$ins_sql = "INSERT INTO session VALUES('$sessionId', '$data', '$lapse_time')";
$res = mysqli_query($link, $ins_sql);
} else {
$up_sql = "UPDATE session SET data = '$data', lapse_time = '$lapse_time' WHERE id = '$sessionId'";
$res = mysqli_query($link, $up_sql);
}
return $res;
}
// Delete Session
function sess_destroy($sessionId)
{
echo "sess_destroy() Method <br/>";
global $link;
$sql = "DELETE FROM session WHERE id = '$sessionId'";
return mysqli_query($link, $sql);
}
// Clean up invalid Session
function sess_gc()
{
echo "sess_gc() Method <br/>";
global $link;
$time = time();
$sql = "DELETE FROM session WHERE lapse_time < '$time'";
$res = mysqli_query($link, $sql);
return $res;
}
//session_set_save_handler('sess_open', 'sess_close', 'sess_read', 'sess_write', 'sess_destroy', 'sess_gc');
//echo ini_get("session.save_handler") . PHP_EOL; // return user
//die;
//**********************************************************************
//ini_set("session.save_handler", "user");//user For custom
session_set_save_handler('sess_open', 'sess_close', 'sess_read', 'sess_write', 'sess_destroy', 'sess_gc');
session_start();
$_SESSION['user'] = 'admin';
var_dump($_SESSION['user']);
The result of the browser visit is as follows :
The database data is as follows :
边栏推荐
- 2022 refrigeration and air conditioning equipment installation and repair examination contents and new version of refrigeration and air conditioning equipment installation and repair examination quest
- In line elements are transformed into block level elements, and display transformation and implicit transformation
- How to upgrade high value-added links in the textile and clothing industry? APS to help
- Distributed ID
- Web开发小妙招:巧用ThreadLocal规避层层传值
- Minimum cut edge set of undirected graph
- Redis insert data garbled solution
- Is it safe to open an account in flush? Which securities company is good at opening an account? Low handling charges
- (工作记录)2020年3月11日至2021年3月15日
- Pycharm remote execution
猜你喜欢
【每周一坑】计算100以内质数之和 +【解答】输出三角形
Comprehensive evaluation and recommendation of the most comprehensive knowledge base management tools in the whole network: flowus, baklib, jiandaoyun, ones wiki, pingcode, seed, mebox, Yifang cloud,
Event center parameter transfer, peer component value transfer method, brother component value transfer
use. Net analysis Net talent challenge participation
2022 refrigeration and air conditioning equipment installation and repair examination contents and new version of refrigeration and air conditioning equipment installation and repair examination quest
【每周一坑】输出三角形
Laravel notes - add the function of locking accounts after 5 login failures in user-defined login (improve system security)
设计你的安全架构OKR
1500万员工轻松管理,云原生数据库GaussDB让HR办公更高效
[asp.net core] set the format of Web API response data -- formatfilter feature
随机推荐
2022 refrigeration and air conditioning equipment installation and repair examination contents and new version of refrigeration and air conditioning equipment installation and repair examination quest
Tips for web development: skillfully use ThreadLocal to avoid layer by layer value transmission
Basic knowledge of lists
2022 portal crane driver registration examination and portal crane driver examination materials
小孩子學什麼編程?
Solution to the 38th weekly match of acwing
Pycharm remote execution
7. Data permission annotation
How does kubernetes support stateful applications through statefulset? (07)
The most comprehensive new database in the whole network, multidimensional table platform inventory note, flowus, airtable, seatable, Vig table Vika, flying Book Multidimensional table, heipayun, Zhix
SQL injection 2
SAP UI5 框架的 manifest.json
OAI 5G NR+USRP B210安装搭建
【微信小程序】运行机制和更新机制
OAI 5g nr+usrp b210 installation and construction
"Penalty kick" games
Minimum cut edge set of undirected graph
What programming do children learn?
[diy] self designed Microsoft makecode arcade, official open source software and hardware
正则表达式收集