将session存储到数据库中
程序员文章站
2022-03-30 20:08:08
...
Sql语句代码
CREATE TABLE sessions ( id CHAR(32) NOT NULL, data TEXT, last_accessed TIMESTAMP NOT NULL, PRIMARY KEY (id) );
自定义会话处理代码
<?php /** * Created by PhpStorm. * User: michaeldu * Date: 15/7/14 * Time: 下午2:57 */ $sdbc = NULL; function open_session() { global $sdbc; $sdbc = mysqli_connect('192.168.31.172', 'root', 'root', 'phpadvanced'); return true; } function close_session() { global $sdbc; return mysqli_close($sdbc); } function read_session($sid) { global $sdbc; $q = sprintf('SELECT data FROM sessions WHERE id="%s"', mysqli_real_escape_string($sdbc, $sid)); $r = mysqli_query($sdbc, $q); if (mysqli_num_rows($r) == 1) { list($data) = mysqli_fetch_array($r, MYSQLI_NUM); return $data; } else { return ''; } } function write_session($sid, $data) { global $sdbc; $q = sprintf('REPLACE INTO sessions (id, data) VALUES ("%s", "%s")', mysqli_real_escape_string($sdbc, $sid), mysqli_real_escape_string($sdbc, $data)); $r = mysqli_query($sdbc, $q); return true; } function destroy_session($sid) { global $sdbc; $q = sprintf('DELETE FROM session WHERE id="%s"', mysqli_real_escape_string($sdbc, $sid)); $r = mysqli_query($sdbc, $q); $_SESSION = array(); return true; } function clean_session($expire) { global $sdbc; $q = sprintf('DELETE FROM sessions WHERE DATE_ADD(last_accessed, INTERVAL %d SECOND) < NOW()', (int)$expire); $r = mysqli_query($sdbc, $q); return true; } session_set_save_handler('open_session', 'close_session', 'read_session', 'write_session', 'destroy_session', 'clean_session'); session_start();
在普通页面调用代码
colour_blue <?php if(empty($_SESSION)) { $_SESSION['blah'] = 'umlaut'; $_SESSION['this'] = 3615684.45; $_SESSION['that'] = 'blue'; echo 'Session已存储'; } else { echo 'SESSION已存在, '.print_r($_SESSION, 1).''; } if(isset($_GET['logout'])) { session_destroy(); echo '会话结束'; } else { echo '登出'; } echo '会话数据: '.print_r($_SESSION, 1).''; ?>
上一篇: php copy()函数的用途?
下一篇: php多文件上传下载示例分享
推荐阅读
-
Oracle存储过程之数据库中获取数据实例
-
ae插件pr可以用吗?将AE插件复制到pr插件文件夹中的详细教程
-
SQL Server中通过扩展存储过程实现数据库的远程备份与恢复
-
sql将一个表中的数据插入到另一个表中的方法
-
通过系统数据库获取用户所有数据库中的视图、表、存储过程
-
SQL高级应用之同服务器上复制表到另一数据库中并实现去重复
-
将mater库中的系统存储过程批量生成*.sql文件 通用且非常实用
-
Endnote参考文献管理软件怎么将数据库建到百度云?
-
PowerDesigner 建立与SQLSERVER 2005数据库的连接以便生成数据库和从数据库生成到PD中
-
将Eclipse中的Web项目部署到Eclipse的方法[图文]