php自定文件保存session的方法


Posted in PHP onDecember 10, 2014

本文实例讲述了php自定文件保存session的方法。分享给大家供大家参考。具体实现方法如下:

session.inc.php文件:定义session的文件存储,session解决方案,就是要提供在php脚本中定义全局变量的方法,使得这个全局变量在同一个session中对于所有的php脚本都有效,我们都知道,session不是一个简单的时间概念,一个session中还包括了特定的用户和服务器,因此更详细地讲,在一个session定义的全局变量的作用范围,是指这个session所对应的用户所访问的所有php,例如a用户通过session定义了一个全局变量$user="wind"中,而b用户通过session定义的全局变量$user="jane",那么在a用户所访问的php脚本中,$user的值就是wind.

php如何创建session

开始介绍如何创建 session,非常简单,启动 session 会话,并创建一个 $admin 变量:

启动 session:

session_start();

声明一个名为 admin 的变量,并赋空值:$_session["admin"] = null;

如果你使用了 seesion,或者该 php 文件要调用 session 变量,那么就必须在调用 session 之前启动它,使用 session_start() 函数,其它都不需要你设置了,php 自动完成 session 文件的创建,执行完这个程序后,我们可以到系统临时文件夹找到这个 session 文件,一般文件名形如:sess_4c83638b3b0dbf65583181c2f89168ec,后面是 32 位编码后的随机字符串,用编辑器打开它,看一下它的内容:admin|n;,PHP实例代码如下:

<?php 

//定义一个超全局数组 

$_session = array(); 

//定义文件句柄 

$fp = null; 

 

//用户自定义的开启session函数 

function session_file_start() { 

 

//1. 首先判断浏览器有没有发送cookie值 

if (isset($_cookie['fileid'])) { 

 

//2. 接收cookie值 

$filename = $_cookie['fileid']; 

 

//3. 打开文件,用于读写 

if (file_exists($filename)) { 

$globals['fp'] = fopen($filename, 'r+'); 

} else { 

$globals['fp'] = fopen($filename, 'w+'); 

} 

} else { 

//2. 设置一个文件,并把该文件名放到cookie中 

$filename = date('ymdhis'); 

setcookie('fileid', $filename, time()+60*60*24); 

 

//3. 打开文件,用于读写 

$globals['fp'] = fopen($filename, 'w+'); 

 

} //end of if-else 

 

//4. 把文件中的数据存储到超全局数组$_session中 

while (!feof($globals['fp'])) { 

//读取文件中的一行 

$buffer = fgets($globals['fp']); 

//处理所读取的这一行 

$tmparr = explode('=', trim($buffer, 'rn')); 

 

//添加到session数组中 

if (count($tmparr) == 2) { 

$globals['_session'][$tmparr[0]] = $tmparr[1]; 

} 

} //end of while 

 

} //end of session_file_start() 

 

//注册会话变量的函数 

function session_file_register($key, $val) { 

 

//设定session变量 

$globals['_session'][$key] = $val; 

 

//把该变量放到文件中 

fseek($globals['fp'], 0, seek_end); 

fwrite($globals['fp'], "$key=$valrn"); 

} //end of session_file_register() 

//结束会话变量 

function session_file_destroy() { 

//1. 关闭文件指针 

fclose($globals['fp']); 

$fp = null; 

//2. 设置session数组为空 

$globals['_session'] = array(); 

} //end of session_file_destroy()

测试代码文件:1.php
<?php 

//确定编码格式 

header('content-type: text/html; charset=utf-8'); 

include("session-file.php"); 

//测试函数: 

//开启会话 

session_file_start(); 

//注册会话变量 

$key = 'username'; 

$val = 'lsl'; 

session_file_register($key, $val); 

session_file_register('username', 'lisa'); 

//打印session数组 

echo $_session['username']; 

?> 

<a href="2.php">下一页</a>

测试文件:2.php
<?php 

//确定编码格式 

header('content-type: text/html; charset=utf-8'); 

include("session-file.php"); 

//测试函数: 

//开启会话 

session_file_start(); 

echo $_session['username']; 

?>

希望本文所述对大家的PHP程序设计有所帮助。

PHP 相关文章推荐
php 常用字符串函数总结
Mar 15 PHP
PHP中文URL编解码(urlencode()rawurlencode()
Jul 03 PHP
php中通过Ajax如何实现异步文件上传的代码实例
May 07 PHP
PHP性能优化准备篇图解PEAR安装
Dec 05 PHP
PHP中去掉字符串首尾空格的方法
May 19 PHP
php中inlcude()性能对比详解
Sep 16 PHP
php获取apk包信息的方法
Aug 15 PHP
php返回json数据函数实例
Oct 09 PHP
PHP制作用户注册系统
Oct 23 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
Apr 15 PHP
PHP封装类似thinkphp连贯操作数据库Db类与简单应用示例
May 08 PHP
基于PHP实现微信小程序客服消息功能
Aug 12 PHP
php通过session防url攻击方法
Dec 10 #PHP
php利用cookies实现购物车的方法
Dec 10 #PHP
php针对cookie操作的队列操作类实例
Dec 10 #PHP
php利用cookie实现自动登录的方法
Dec 10 #PHP
PHP使用header()输出图片缓存实例
Dec 09 #PHP
PHP实现服务器状态监控的方法
Dec 09 #PHP
PHP里8个鲜为人知的安全函数分析
Dec 09 #PHP
You might like
Linux fgetcsv取得的数组元素为空字符串的解决方法
2011/11/25 PHP
php+ajax导入大数据时产生的问题处理
2014/06/11 PHP
javascript+php实现根据用户时区显示当地时间的方法
2015/03/11 PHP
PHP编写RESTful接口
2016/02/23 PHP
php curl发送请求实例方法
2019/08/01 PHP
基于jquery的划词搜索实现(备忘)
2010/09/14 Javascript
判断滚动条到底部的JS代码
2013/11/04 Javascript
js实现数组去重、判断数组以及对象中的内容是否相同
2013/11/29 Javascript
js获取html页面节点方法(递归方式)
2013/12/13 Javascript
JavaScript获取图片真实大小代码实例
2014/09/24 Javascript
JS+CSS实现淡入式焦点图片幻灯切换效果的方法
2015/02/26 Javascript
Function.prototype.apply()与Function.prototype.call()小结
2016/04/27 Javascript
在JavaScript中模拟类(class)及类的继承关系
2016/05/20 Javascript
详解JS去重及字符串奇数位小写转大写
2016/12/29 Javascript
使用jquery给新生的th绑定hover事件的实例
2017/02/10 Javascript
nodejs利用ajax实现网页无刷新上传图片实例代码
2017/06/06 NodeJs
js 事件的传播机制(实例讲解)
2017/07/20 Javascript
bootstrap-table实现服务器分页的示例 (spring 后台)
2017/09/01 Javascript
JavaScript原生实现观察者模式的示例
2017/12/15 Javascript
nodejs微信开发之接入指南
2019/03/17 NodeJs
如何用原生js写一个弹窗消息提醒插件
2019/05/24 Javascript
js实现无缝轮播图
2020/03/09 Javascript
Python使用matplotlib绘图无法显示中文问题的解决方法
2018/03/14 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
python使用requests.session模拟登录
2019/08/09 Python
香蕉共和国工厂店:Banana Republic Factory
2018/06/09 全球购物
如何查找和删除数据库中的重复数据
2014/11/05 面试题
中软国际Java程序员机试题
2012/08/19 面试题
2014年最新学习全国两会精神心得
2014/03/17 职场文书
赞美老师的演讲稿
2014/05/22 职场文书
2014年医院科室工作总结
2014/12/20 职场文书
2015年教研员工作总结
2015/05/26 职场文书
2016年优秀党务工作者先进事迹材料
2016/02/29 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书
Python办公自动化PPT批量转换操作
2021/09/15 Python