闲来无事写的PHP类似于Session的功能函数,我想尽脑门给它取了个名叫 Impression(印象),自己觉得好玩,和PHP中的Session功能差不多,但还是要差很多,额..
具体代码如下:
PHP代码
- <?php
- /*
- PHP类似于Session的功能函数Impression(印象)
- 原创 by pader [QQ:270075658] [Homepage:www.vgot.cn] [E-mail:[email protected]]
- 版权所有:Pader - http://www.vgot.cn
- require_once 'impression.func.php';
- */
- //开始印象应用,必须在任何数据被输出到浏览器之前
- function impression_start(){
- global $_impression,$_impression_cfg;
- $_impression_cfg["datafolder"] = "F:/wwwroot/impression"; //印象数据存储的系统绝对目录,后面不要带斜杠
- $_impression = array();
- if($_COOKIE["PHPIMPRESSID"]){
- $_impression_cfg["data"] = $_impression_cfg["datafolder"]."/impress_".$_COOKIE["PHPIMPRESSID"].".php";
- if(file_exists($_impression_cfg["data"])){
- $data = file($_impression_cfg["data"]);
- $filemax = count($data);
- $zline = explode('||',$data[0]);
- $_impression_cfg["vid"] = $zline[1];
- for($i=1;$i<$filemax;$i++){
- $vline = explode("||",$data[$i]);
- $n = str_replace(array('\|',"\\\\r\\\\n"),array('|',""),$vline[0]);
- $v = str_replace(array('\|',"\\\\r\\\\n"),array('|',""),$vline[1]);
- $_impression["$n"] = $v;
- }
- }else{
- setcookie("PHPIMPRESSID");
- die('<p><b>印象应用错误:</b>发生一个错误,印象应用被注销,请刷新页面重新开始一个印象应用对话。</p>');
- }
- }else{
- for($i=1;;$i++){
- $ncode = md5($i);
- $_impression_cfg["data"] = $_impression_cfg["datafolder"]."/impress_".$ncode.".php";
- if(!file_exists($_impression_cfg["data"])){
- if(@touch($_impression_cfg["data"])){
- $_impression_cfg["vid"] = "impress_".$i;
- if(setcookie("PHPIMPRESSID",$ncode)){
- $st = 1;
- $writeData = '<?php exit; ?>||'.$_impression_cfg["vid"].'||'.time()."||";
- if($fp = @fopen($_impression_cfg["data"],"w")){
- if(@fwrite($fp,$writeData)){$st = 1;}
- fclose($fp);
- }
- }else{
- echo '<p><b>印象应用错误:</b>使用 impression_start() 函数必须在任何数据被输出到浏览器之前。</p>';
- }
- }else{
- echo '<p><b>印象应用错误:</b>发生一个错误,印象数据创建失败,请检查相关权限。</p>';
- }
- break;
- }
- }
- }
- }
- //应用印象数据
- function impression_apply(){
- global $_impression,$_impression_cfg;
- $st = 0;
- $writeData = '<?php exit; ?>||'.$_impression_cfg["vid"].'||'.time()."||";
- foreach($_impression as $n => $v){
- $n = str_replace(array('|',""),array('\|',"\\\\r\\\\n"),$n);
- $v = str_replace(array('|',""),array('\|',"\\\\r\\\\n"),$v);
- $writeData .= $n.'||'.$v."||";
- }
- if($fp = @fopen($_impression_cfg["data"],"w")){
- if(@fwrite($fp,$writeData)){$st = 1;}
- fclose($fp);
- }
- if(!$st){echo '<p><b>印象应用错误:</b>发生一个错误,印象数据存储失败,请检查相关权限。</p>';}
- return $st;
- }
- //卸载印象数据
- function impression_unset(){
- global $_impression,$_impression_cfg;
- $writeData = '<?php exit; ?>||'.$_impression_cfg["vid"].'||'.time()."||";
- if($fp = @fopen($_impression_cfg["data"],"w")){
- if(@fwrite($fp,$writeData)){$st = 1;}
- fclose($fp);
- }
- }
- ?>
和 Setcookie() 一样,在开始使用时 impression_start() 函数必须在任何数据被输出到浏览器之前进行调用,得到的全局变量是 $_impression ,在页面中要获取或存取值直接把值赋给 $_impression[] :
PHP代码
- <?php
- require 'impression.func.php'; //调用函数文件
- impression_start(); //开始印象应用
- $_impression["hello"] = "http://www.vgot.cn";
- $_impression["world"] = "哈哈哦哈哈";
- $_impression["你好世界"] = "http://
www.vgot.cn"; //可以存储带有换行的字符串,但是不可以存储数组和类等 - impression_apply();
- //要想印象内容被存储并在其它页面被调用,必须使用impression_apply()函数,此函数的功能就是把之前被赋值的$_impression变量存储进数据库
- //如果想要清除印象当前会话的所有数据,则可以使用impression_unset()函数,这样,$_impression的内容就为空
- ?>
PHP代码
- <?php //test.php
- require 'impression.func.php'; //调用函数文件
- impression_start(); //开始印象应用
- echo $_impression["hello"]; //输出 "http://www.vgot.cn"
- echo $_impression["world"]; //输出 "哈哈哦哈哈"
- echo $_impression["你好世界"];
- /*输出 "http://
www.vgot.cn" - */
- ?>
希望大家能够多给意见把它变得更好玩~
评论 共有 0 条评论
暂无评论,快发表你的评论吧。