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会创建一个会话,保存用户的个性化设置,直到他们完成下单或退出会话。这使得用户能够在网站的不同页面间切换而不会丢失定制信息,提升用户体验。 在安全性方面,PHP提供了丰富的...
1. **配置Spring MVC**:设置DispatcherServlet,配置处理器映射器和视图解析器,定义Controller来处理请求。 2. **集成Spring Security**:配置Spring Security的核心组件,如WebSecurityConfigurerAdapter,定义...
PHP语法简洁且功能强大,支持多种数据库连接,如MySQL、PostgreSQL等,能够处理表单数据、生成动态网页内容、实现服务器端的会话控制等。 **Apache服务器** Apache HTTP Server是世界上最流行的Web服务器软件,...
3. **Session认证**:登录成功后,为了保持用户的会话状态,CGI程序会创建一个Session ID,将其存储在服务器端,并将这个ID作为cookie返回给客户端。每次后续请求时,客户端都会携带这个Session ID,服务器通过它...
它可以被用于创建定制的、专用的文档结构,便于数据的存储和传输。JavaScript和PHP等语言都有处理XML的API,使得XML在Web服务和应用程序间的数据交互中扮演重要角色。 【JS】 JavaScript是一种轻量级的解释型编程...
- `@SessionAttributes`:用于指定要存储在会话中的模型属性名称。 - `@ModelAttribute("model")`:用于将方法的返回值添加到模型中。 ##### 4.2 参数绑定 - **简单类型绑定**:自动绑定基本类型(如String、int等...
8. 自定义媒体播放器:创建具有定制功能的视频和音频播放器。 9. 错误处理与调试:学习错误捕获和调试技巧,如try-catch。 十五、Ajax 1. Ajax是什么:异步JavaScript和XML,实现页面局部刷新。 2. Ajax原理图:...
它可以在多种操作系统上运行,并与各种数据库系统兼容,如MySQL、PostgreSQL等。PHP代码嵌入到HTML文档中,通过HTTP协议传输,由Web服务器解释执行,生成动态HTML页面。 在"TEAM论坛 PHP"中,PHP发挥着核心作用,...
了解MySQL,你需要学习SQL语言,包括数据查询、插入、更新和删除,以及表的创建、索引、视图和存储过程。还要理解事务处理、备份恢复、性能优化等高级主题。 【Nginx】:Nginx是一款高性能的HTTP和反向代理服务器,...
源码中可能包含对用户输入的验证、会话管理、权限控制等安全措施。深入理解这些机制可以帮助我们提高系统的安全防护。 总结,"基于PHP的CMS企业外网方案(原PHP168S系列)源码.zip" 是一个为企业网站提供内容管理的...
首先,PHP(Hypertext Preprocessor,超文本预处理器)是一种开源、跨平台的编程语言,特别适合于Web开发。它允许开发者在HTML代码中嵌入PHP代码,以处理服务器端的任务,如数据库查询、用户输入验证和会话管理等。...
6. **会话管理**:登录成功后,软件可能会设置会话状态,以跟踪用户的活动,直到用户选择登出或达到预设的会话超时。 7. **网络通信**:如果登录信息需要通过网络发送到服务器验证,易语言提供了HTTP请求或TCP/IP...
ncurses-5.9_for_arm是专为ARM架构设计的版本,对于运行在ARM处理器上的系统,如嵌入式设备或树莓派等,这个库是至关重要的。 在ARM平台上运行MySQL数据库管理系统时,ncurses库是必不可少的依赖之一。ncurses库为...
它支持多种数据库连接,如MySQL、PostgreSQL等,具备处理表单、会话控制、加密、文件上传下载等多种功能,使得创建复杂的Web应用程序变得相对简单。 【压缩包子文件的文件名称列表】中的 "132687498011224889" 可能...
在Java中,我们可以使用JavaMail API来创建、发送、接收和管理邮件。这个压缩包可能包含了一个完整的邮件服务器实现,如James或者JavaMail Server项目,或者是一个自定义的、小型化的邮件服务器解决方案。 JavaMail...
3. 数据库接口:可能使用MySQL或其他关系型数据库管理系统,存储用户信息、聊天记录和其他关键数据。 4. 认证和授权:为了保证安全,系统可能包含用户身份验证和权限控制机制,防止未授权访问。 5. 聊天记录:系统...
6. **数据库支持(Database Support)**:Web.py提供了简单的数据库抽象层,允许你轻松地与多种数据库进行交互,如SQLite、MySQL等。 7. **异常处理(Error Handling)**:Web.py允许自定义错误页面,当发生错误时...
创建个人博客的关键组件通常包括以下几个部分: 1. **前端界面**:这部分通常由HTML、CSS和JavaScript组成,负责博客的视觉设计和用户交互。HTML定义了页面结构,CSS控制样式,JavaScript处理页面上的动态效果和...
它是一个抽象层,使得程序员可以使用统一的接口处理不同的数据库系统,如MySQL、Oracle、PostgreSQL等,而无需关心底层数据库的具体细节。 手册的"名称"部分可能涉及Perl DBI的命名规范和模块的引入方法。在Perl中...