`
jickcai
  • 浏览: 243036 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

创建定制mysql会话处理器

    博客分类:
  • php
阅读更多

1.创建存储数据的mysql表

DROP TABLE IF EXISTS `session`.`sessioninfo`;
CREATE TABLE  `session`.`sessioninfo` (
  `SID` char(32) NOT NULL,
  `expiration` int(10) unsigned NOT NULL,
  `value` text NOT NULL,
  PRIMARY KEY  (`SID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

2.创建6个定制处理器函数,并用session_set_save_handler注册

mysqlsessionhandlers.php

<?php
/*
 * mysql_session_open()
 * opens a persistent server connectiona and selects the database.
 */
function mysql_session_open($session_path,$session_name){
 mysql_connect("localhost","root","root") or die("Can't connect to MySQL server!");
 mysql_select_db("session") or die("Can't select MySQL session database");
}
/*
 * mysql_session_close()
 * Doesn't actually do anything since the server connection is
 * persitne.Keep in mind that although this function
 * doesn't do anything in my particular implomentation,it
 * must nonetheless be defined
 */
function mysql_session_close(){
 return 1;
}
/*
 * mysql_session_select()
 * Reads the session data from the database
 */
function mysql_session_select($SID){
 $query="select value from sessionfinfo where SID='$SID' and expiration >".time();
 $result=mysql_query($query);
 if(mysql_num_rows($result)){
  $row=mysql_fetch_assoc($result);
  $value=$row['value'];
  return $value;
 }else{
  return "";
 }
}
/*
 * mysql_session_write()
 * This function writes the session data to the database.
 * If that SID already exists,then the existing data will be updated.
 */
function mysql_session_write($SID,$value){
 $lifetime=get_cfg_var("session.gc_maxlifetime");
 $expiration=time()+$lifetime;
 $query="insert into sessioninfo values('$SID','$expiration','$value')";
 $result=mysql_query($query);
 if(!$result){
  $query="update sessioninfo set expiration='$expiration' value='$value' where SID='$SID' and expiration>".time();
  $result=mysql_query($query);
 }
}
/*
 * mysql_session_destory()
 * Deletes all session information having input SID(only on row)
 */
function mysql_session_destroy($SID){
 $query="delete from sessioninfo where SID='$SID";
 $result=mysql_query($query);
}

function mysql_session_garbage_collect($lifetime){
 $query="delete from sessioninfo where expiration<".time()-$lifetime;
 $result=mysql_query($query);
 return mysql_affected_rows($result);
}
session_set_save_handler("mysql_session_open","mysql_session_close","mysql_session_select","mysql_session_write","mysql_session_destroy","mysql_session_garbage_collect");

?>
3.测试

<?php

include "mysqlsessionhandlers.php";

session_start();
$_SESSION["name"]="jickcai";

?>

会看到数据已插入到数据库里.

分享到:
评论

相关推荐

    php开发的西服职业装定制网站.zip

    当用户浏览产品并开始定制时,PHP会创建一个会话,保存用户的个性化设置,直到他们完成下单或退出会话。这使得用户能够在网站的不同页面间切换而不会丢失定制信息,提升用户体验。 在安全性方面,PHP提供了丰富的...

    springmvc4.0+spring-security3.2+mybatis3.3+mysql整合的登陆功能,

    1. **配置Spring MVC**:设置DispatcherServlet,配置处理器映射器和视图解析器,定义Controller来处理请求。 2. **集成Spring Security**:配置Spring Security的核心组件,如WebSecurityConfigurerAdapter,定义...

    集成软件PHPstudy

    PHP语法简洁且功能强大,支持多种数据库连接,如MySQL、PostgreSQL等,能够处理表单数据、生成动态网页内容、实现服务器端的会话控制等。 **Apache服务器** Apache HTTP Server是世界上最流行的Web服务器软件,...

    登录并验证cgi 程序

    3. **Session认证**:登录成功后,为了保持用户的会话状态,CGI程序会创建一个Session ID,将其存储在服务器端,并将这个ID作为cookie返回给客户端。每次后续请求时,客户端都会携带这个Session ID,服务器通过它...

    web开发手册集

    它可以被用于创建定制的、专用的文档结构,便于数据的存储和传输。JavaScript和PHP等语言都有处理XML的API,使得XML在Web服务和应用程序间的数据交互中扮演重要角色。 【JS】 JavaScript是一种轻量级的解释型编程...

    SpringMVC学习课堂笔记

    - `@SessionAttributes`:用于指定要存储在会话中的模型属性名称。 - `@ModelAttribute("model")`:用于将方法的返回值添加到模型中。 ##### 4.2 参数绑定 - **简单类型绑定**:自动绑定基本类型(如String、int等...

    php开发培训最全学习大纲.docx

    8. 自定义媒体播放器:创建具有定制功能的视频和音频播放器。 9. 错误处理与调试:学习错误捕获和调试技巧,如try-catch。 十五、Ajax 1. Ajax是什么:异步JavaScript和XML,实现页面局部刷新。 2. Ajax原理图:...

    TEAM论坛 PHP

    它可以在多种操作系统上运行,并与各种数据库系统兼容,如MySQL、PostgreSQL等。PHP代码嵌入到HTML文档中,通过HTTP协议传输,由Web服务器解释执行,生成动态HTML页面。 在"TEAM论坛 PHP"中,PHP发挥着核心作用,...

    linux-LinuxMySQLNginxPHPGitShell等笔记

    了解MySQL,你需要学习SQL语言,包括数据查询、插入、更新和删除,以及表的创建、索引、视图和存储过程。还要理解事务处理、备份恢复、性能优化等高级主题。 【Nginx】:Nginx是一款高性能的HTTP和反向代理服务器,...

    基于PHP的CMS企业外网方案(原PHP168S系列)源码.zip

    源码中可能包含对用户输入的验证、会话管理、权限控制等安全措施。深入理解这些机制可以帮助我们提高系统的安全防护。 总结,"基于PHP的CMS企业外网方案(原PHP168S系列)源码.zip" 是一个为企业网站提供内容管理的...

    关于咖啡网站的PHP基础设计

    首先,PHP(Hypertext Preprocessor,超文本预处理器)是一种开源、跨平台的编程语言,特别适合于Web开发。它允许开发者在HTML代码中嵌入PHP代码,以处理服务器端的任务,如数据库查询、用户输入验证和会话管理等。...

    易语言制作软件登录源码!无模块!

    6. **会话管理**:登录成功后,软件可能会设置会话状态,以跟踪用户的活动,直到用户选择登出或达到预设的会话超时。 7. **网络通信**:如果登录信息需要通过网络发送到服务器验证,易语言提供了HTTP请求或TCP/IP...

    ncurses-5.9_for_arm

    ncurses-5.9_for_arm是专为ARM架构设计的版本,对于运行在ARM处理器上的系统,如嵌入式设备或树莓派等,这个库是至关重要的。 在ARM平台上运行MySQL数据库管理系统时,ncurses库是必不可少的依赖之一。ncurses库为...

    基于PHP的NiTuo php站长查询工具.zip

    它支持多种数据库连接,如MySQL、PostgreSQL等,具备处理表单、会话控制、加密、文件上传下载等多种功能,使得创建复杂的Web应用程序变得相对简单。 【压缩包子文件的文件名称列表】中的 "132687498011224889" 可能...

    基于java的邮件服务器源程序.zip

    在Java中,我们可以使用JavaMail API来创建、发送、接收和管理邮件。这个压缩包可能包含了一个完整的邮件服务器实现,如James或者JavaMail Server项目,或者是一个自定义的、小型化的邮件服务器解决方案。 JavaMail...

    开源在线客服系统最新版源码.zip

    3. 数据库接口:可能使用MySQL或其他关系型数据库管理系统,存储用户信息、聊天记录和其他关键数据。 4. 认证和授权:为了保证安全,系统可能包含用户身份验证和权限控制机制,防止未授权访问。 5. 聊天记录:系统...

    python-web.py包

    6. **数据库支持(Database Support)**:Web.py提供了简单的数据库抽象层,允许你轻松地与多种数据库进行交互,如SQLite、MySQL等。 7. **异常处理(Error Handling)**:Web.py允许自定义错误页面,当发生错误时...

    个人博客PHP源码

    创建个人博客的关键组件通常包括以下几个部分: 1. **前端界面**:这部分通常由HTML、CSS和JavaScript组成,负责博客的视觉设计和用户交互。HTML定义了页面结构,CSS控制样式,JavaScript处理页面上的动态效果和...

    Perl DBI中文手册 pdf.rar

    它是一个抽象层,使得程序员可以使用统一的接口处理不同的数据库系统,如MySQL、Oracle、PostgreSQL等,而无需关心底层数据库的具体细节。 手册的"名称"部分可能涉及Perl DBI的命名规范和模块的引入方法。在Perl中...

Global site tag (gtag.js) - Google Analytics