php自定文件保存session的方法

本文实例讲述了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程序设计有所帮助。

(0)

相关推荐

  • 关于session在PHP5的配置文件中的详细设置参数说明

    ;处理session存取的模式(预设:files) session.save_handler = files ;session档案存放路径(预设:/tmp) session.save_path = /tmp ;session使用cookie的功能(预设:启动 1) session.use_cookies = 1 ;session的名字(预设:PHPSESSID) session.name = PHPSESSID ;自动启动(预设:关 0,此处可以改为1) session.auto_start =

  • PHP session文件独占锁引起阻塞问题解决方法

    PHP默认的会话处理器是session.save_handler = files(即文件).如果同一个客户端同时并发发送多个请求(如ajax在页面同时发送多个请求),且脚本执行时间较长,就会导致session文件阻塞,影响性能.因为对于每个请求,PHP执行session_start(),就会取得文件独占锁,只有在该请求处理结束后,才会释放独占锁.这样,同时多个请求就会引起阻塞.解决方案如下: (1)修改会话变量后,立即使用session_write_close()来保存会话数据并释放文件锁. s

  • 关于PHP中Session文件过多的问题及session文件保存位置

    PHP的默认机制:每一次php请求,会有1/100的概率(默认值)触发"session回收".如果"session回收"发生,那就会检查/tmp/sess_*的文件,如果最后的修改时间到现在超过了1440秒(gc_maxlifetime的值),就将其删除,意味着这些session过期失效 一.session文件是什么 文件一般为 /tmp/sessions/sess_4b1e384ad74619bd212e236e52a5a174If username|s:9:&q

  • PHP中使用Session配合Javascript实现文件上传进度条功能

    Web应用中常需要提供文件上传的功能.典型的场景包括用户头像上传.相册图片上传等.当需要上传的文件比较大的时候,提供一个显示上传进度的进度条就很有必要了. 在PHP 5.4以前,实现这样的进度条并不容易,主要有三种方法: 1.使用Flash, Java, ActiveX 2.使用PHP的APC扩展 3.使用HTML5的File API 第一种方法依赖第三方的浏览器插件,通用性不足,且易带来安全隐患.不过由于Flash的使用比较广泛,因此还是有很多网站使用Flash作为解决方案. 第二种方法的不足

  • php中如何同时使用session和cookie来保存用户登录信息

    同时使用session和cookie来保存用户登录信息1.数据库连接配置页面:connectvars.php 复制代码 代码如下: <?php//数据库的位置define('DB_HOST', '127.0.0.1');//用户名define('DB_USER', 'root');//口令define('DB_PASSWORD', '19900101');//数据库名define('DB_NAME','test') ;?> 2.登录页面:logIn.php 复制代码 代码如下: <?ph

  • PHP实现利用MySQL保存session的方法

    session是PHP程序设计中服务器端用来保存用户信息的一个变量,具有非常广泛的应用价值.本文实例讲述了PHP实现利用MySQL保存session的方法.分享给大家供大家参考之用.具体步骤如下: 本文实例的实现环境为: PHP 5.4.24 MySQL 5.6.19 OS X 10.9.4/Apache 2.2.26 一.代码部分 1.SQL语句: CREATE TABLE `session` ( `skey` char(32) CHARACTER SET ascii NOT NULL, `d

  • php使用Session和文件统计在线人数

    <?php /* @ PHP 在线人数统计程序 Copyright (c) by Pader 1:25 2009年1月7日 How to use it: <script src="online.php"></script> note: 一般独立在线人数统计程序都是统计在线的IP数,而这并不准确 例如局域网的访问者,比如公司,学校机房和网吧,虽然内网IP不同,但是外网IP都是一样 如果同一个局域网的无论多少人人访问你的网站则只被认为是一个人 这个小巧的程序解

  • php自定文件保存session的方法

    本文实例讲述了php自定文件保存session的方法.分享给大家供大家参考.具体实现方法如下: session.inc.php文件:定义session的文件存储,session解决方案,就是要提供在php脚本中定义全局变量的方法,使得这个全局变量在同一个session中对于所有的php脚本都有效,我们都知道,session不是一个简单的时间概念,一个session中还包括了特定的用户和服务器,因此更详细地讲,在一个session定义的全局变量的作用范围,是指这个session所对应的用户所访问的

  • PHP使用Redis替代文件存储Session的方法

    本文实例讲述了PHP使用Redis替代文件存储Session的方法.分享给大家供大家参考,具体如下: PHP默认使用文件存储session,如果并发量大,效率非常低.而Redis对高并发的支持非常好,所以,可以使用redis替代文件存储session. 这里,介绍下php的session_set_save_handler 函数的作用和使用方法.该函数定义用户级session保存函数(如打开.关闭.写入等). 原型如下: bool session_set_save_hanler(callback

  • 使用数据库保存session的方法

    php的session默认是以文件方式保存在服务器端,并且在客户端使用cookie保存变量,这就会出现一个问题,当一个用户由于某种安全原因关闭了浏览器的cookie,程序中的session相关操作将无法执行.因此,如果能以数据库保存session数据,将不受客户端设置的限制,并且在性能和扩展性等方面有一个飞跃.程序中使用关键函数是session_set_save_handler,同时要将php.ini里的session.save_handler = files 改为 user.这里我们讨论的环境

  • javascript实现将文件保存到本地方法汇总

    下面是保存一个图片为示例,代码来源于网络,希望能够给大家带来一定的帮助,代码如下: <script type="text/javascript"> function saveFile(imgUrl) { var oPop=window.open(imgUrl,"","width=1, height=1, top=5000, left=5000"); for(;oPop.document.readyState != "comp

  • express框架下使用session的方法

    上一遍文章说了cookie的不足,提到使用session是解决缺点的一个方法.这遍文章说说怎么使用session.作者使用了文件保存session的方法.若用别保存方式(内存.数据库)也行,记得使用相应的模块. 下面从使用内存存储和文件存储的2个方法分别说明. 内存存储session 实现过程 // app.js // 引入express-session var session = require('express-session') // 为应用绑定session中间件 app.use(ses

  • PHP保存session到memcache服务器的方法

    本文实例讲述了PHP保存session到memcache服务器的方法.分享给大家供大家参考,具体如下: 传统的 session 是写入到服务器文件中,可以在 php.ini 中看出,清单如下 session.save_handler = files session.save_path = "sess保存路径" 但是,如果网站用户很多的话,session 的访问将势必影响网站的速度.因为文件的读取速度是很低的. 众所周知,memcache 作为内存缓存服务器,通过哈希算法,把数据以key

  • php使用MySQL保存session会话的方法

    本文实例讲述了php使用MySQL保存session会话的方法.分享给大家供大家参考.具体分析如下: 在很多大的系统中一般都有这个功能,但是要分离出来分析,网上的资料也不太多 这里我整理了一篇发出来与大家分享 使用MySQL保存session会话较files有很多优点: 1) 有利于分布式系统,files只能保存在一台机器上 2) 有利于大访问量的系统,使用files时每个session保存在一个文件中,目录会超级大,查找session文件会比较困难. 使用MySQL保存会话首先要创建sessi

  • Python保存MongoDB上的文件到本地的方法

    本文实例讲述了Python保存MongoDB上的文件到本地的方法.分享给大家供大家参考,具体如下: MongoDB上的文档通过GridFS来操作,Python也可以通过pymongo连接MongoDB数据库,使用pymongo模块的gridfs方法操作文档.以下示例是把MongoDB上GridFS存的excel文档保存到本地. from pymongo import MongoClient import gridfs client = MongoClient('mongodb://usernam

随机推荐