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 在线打包_支持子目录
Jun 28 PHP
PHP 获取MySQL数据库里所有表的实现代码
Jul 13 PHP
PHP图片处理类 phpThumb参数用法介绍
Mar 11 PHP
PHP学习笔记 IIS7下安装配置php环境
Oct 29 PHP
php记录代码执行时间(实现代码)
Jul 05 PHP
2个自定义的PHP in_array 函数,解决大量数据判断in_array的效率问题
Apr 08 PHP
php单文件版在线代码编辑器
Mar 12 PHP
php实现比较全的数据库操作类
Jun 18 PHP
Zend Framework教程之Zend_Layout布局助手详解
Mar 04 PHP
Symfony2实现在controller中获取url的方法
Mar 18 PHP
php实现生成验证码实例分享
Apr 10 PHP
简单实现php上传文件功能
Sep 21 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
2009/06/29 PHP
PHP文件读写操作之文件读取方法详解
2011/01/13 PHP
php中删除字符串中最先出现某个字符的实现代码
2013/02/03 PHP
php安装xdebug/php安装pear/phpunit详解步骤(图)
2013/12/22 PHP
微信扫描二维码登录网站代码示例
2013/12/30 PHP
php阳历转农历优化版
2016/08/08 PHP
ThinkPHP3.2框架自定义配置和加载用法示例
2018/06/14 PHP
laravel框架上传图片实现实时预览功能
2019/10/14 PHP
如何在PHP中使用AES加密算法加密数据
2020/06/24 PHP
asp批量修改记录的代码
2008/06/25 Javascript
Javascript typeof 用法
2008/12/28 Javascript
jQuery中判断一个元素是否为另一个元素的子元素(或者其本身)
2012/03/21 Javascript
JS中如何设置readOnly的值
2013/12/25 Javascript
浅析Node.js的Stream模块中的Readable对象
2015/07/29 Javascript
JS使用eval解析JSON的注意事项分析
2015/11/14 Javascript
javascript简单判断输入内容是否合法的方法
2016/05/11 Javascript
详解React开发中使用require.ensure()按需加载ES6组件
2017/05/12 Javascript
VUE中使用Vue-resource完成交互
2017/07/21 Javascript
基于VUE.JS的移动端框架Mint UI的使用
2017/10/11 Javascript
js 毫秒转天时分秒的实例
2017/11/17 Javascript
微信小程序MUI侧滑导航菜单示例(Popup弹出式,左侧滑动,右侧不动)
2019/01/23 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
[03:55]显微镜下的DOTA2特别篇——430灰烬之灵神级操作
2014/06/24 DOTA
Python 调用PIL库失败的解决方法
2019/01/08 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
2020/02/25 Python
基于Python实现下载网易音乐代码实例
2020/08/10 Python
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
极度干燥澳大利亚官方网站:Superdry澳大利亚
2019/03/28 全球购物
出纳的岗位职责
2013/11/09 职场文书
领导党性分析材料
2014/02/15 职场文书
项目建议书模板
2014/05/12 职场文书
欢迎领导标语
2014/06/27 职场文书
电话客服专员岗位职责
2014/06/28 职场文书
丧事答谢词
2015/01/05 职场文书
详解Mysql数据库平滑扩容解决高并发和大数据量问题
2022/05/25 MySQL