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 相关文章推荐
WIN98下Apache1.3.14+PHP4.0.4的安装
Oct 09 PHP
mysql_fetch_assoc和mysql_fetch_row的功能加起来就是mysql_fetch_array
Jan 15 PHP
php反弹shell实现代码
Apr 22 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
Jul 22 PHP
php函数之子字符串替换&amp;#65279; str_replace
Mar 23 PHP
PHP中strlen()和mb_strlen()的区别浅析
Jun 19 PHP
PHP往XML中添加节点的方法
Mar 12 PHP
php判断访问IP的方法
Jun 19 PHP
详解PHP中cookie和session的区别及cookie和session用法小结
Jun 12 PHP
利用php + Laravel如何实现部署自动化详解
Oct 11 PHP
PHP+Ajax实现上传文件进度条动态显示进度功能
Jun 04 PHP
thinkPHP5.1框架使用SemanticUI实现分页功能示例
Aug 03 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
PHP文本操作类
2006/11/25 PHP
PHP截取汉字乱码问题解决方法mb_substr函数的应用
2008/03/30 PHP
php实现汉字验证码和算式验证码的方法
2015/03/07 PHP
php实现的通用图片处理类
2015/03/24 PHP
javascript之更有效率的字符串替换
2008/08/02 Javascript
简单的jquery拖拽排序效果实现代码
2011/09/20 Javascript
js添加table的行和列 具体实现方法
2013/07/22 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
2014/02/13 Javascript
jquery中push()的用法(数组添加元素)
2014/11/25 Javascript
JavaScript DOM操作表格及样式
2015/04/13 Javascript
Javascript中String的常用方法实例分析
2015/06/13 Javascript
jQuery页面加载初始化的3种方法(推荐)
2016/06/02 Javascript
如何理解Vue的作用域插槽的实现原理
2017/08/19 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
2018/09/07 Javascript
vue实现从外部修改组件内部的变量的值
2020/07/30 Javascript
微信小程序使用前置摄像头拍照
2020/10/22 Javascript
jQuery-App输入框实现实时搜索
2020/11/19 jQuery
[06:20]2015国际邀请赛第三日top10
2015/08/08 DOTA
python实现井字棋游戏
2020/03/30 Python
Python实现对字符串的加密解密方法示例
2017/04/29 Python
Django 使用logging打印日志的实例
2018/04/28 Python
python scipy求解非线性方程的方法(fsolve/root)
2018/11/12 Python
Python中垃圾回收和del语句详解
2018/11/15 Python
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
Python对象与引用的介绍
2019/01/24 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
Python用input输入列表的实例代码
2020/02/07 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
PyCharm2020最新激活码+激活码补丁(亲测最新版PyCharm2020.2激活成功)
2020/11/25 Python
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
华三通信H3C面试题
2015/05/15 面试题
KTV门卫岗位职责
2014/10/09 职场文书
小学工作总结2015
2015/05/04 职场文书
实习单位意见
2015/06/04 职场文书
帮你提高开发效率的JavaScript20个技巧
2021/06/18 Javascript