PHP类似于Session的功能函数Impression(印象)

Pader2008年2月19日 发表于 网页与编程

闲来无事写的PHP类似于Session的功能函数,我想尽脑门给它取了个名叫 Impression(印象),自己觉得好玩,和PHP中的Session功能差不多,但还是要差很多,额..

具体代码如下:

PHP代码
  1. <?php   
  2. /*  
  3. PHP类似于Session的功能函数Impression(印象)  
  4. 原创 by pader [QQ:270075658] [Homepage:www.vgot.cn] [E-mail:[email protected] 
  5. 版权所有:Pader - http://www.vgot.cn  
  6.  
  7. require_once 'impression.func.php';  
  8. */  
  9.   
  10. //开始印象应用,必须在任何数据被输出到浏览器之前   
  11. function impression_start(){   
  12. global $_impression,$_impression_cfg;   
  13. $_impression_cfg["datafolder"] = "F:/wwwroot/impression"//印象数据存储的系统绝对目录,后面不要带斜杠   
  14. $_impression = array();   
  15. if($_COOKIE["PHPIMPRESSID"]){   
  16.  $_impression_cfg["data"] = $_impression_cfg["datafolder"]."/impress_".$_COOKIE["PHPIMPRESSID"].".php";   
  17.  if(file_exists($_impression_cfg["data"])){   
  18.   $data = file($_impression_cfg["data"]);   
  19.   $filemax = count($data);   
  20.   $zline = explode('||',$data[0]);   
  21.   $_impression_cfg["vid"] = $zline[1];   
  22.   for($i=1;$i<$filemax;$i++){   
  23.    $vline = explode("||",$data[$i]);   
  24.    $n = str_replace(array('\|',"\\\\r\\\\n"),array('|',""),$vline[0]);   
  25.    $v = str_replace(array('\|',"\\\\r\\\\n"),array('|',""),$vline[1]);   
  26.    $_impression["$n"] = $v;   
  27.   }   
  28.  }else{   
  29.  setcookie("PHPIMPRESSID");   
  30.  die('<p><b>印象应用错误:</b>发生一个错误,印象应用被注销,请刷新页面重新开始一个印象应用对话。</p>');   
  31.  }   
  32. }else{   
  33.  for($i=1;;$i++){   
  34.   $ncode = md5($i);   
  35.   $_impression_cfg["data"] = $_impression_cfg["datafolder"]."/impress_".$ncode.".php";   
  36.   if(!file_exists($_impression_cfg["data"])){   
  37.    if(@touch($_impression_cfg["data"])){   
  38.     $_impression_cfg["vid"] = "impress_".$i;   
  39.     if(setcookie("PHPIMPRESSID",$ncode)){   
  40.     $st = 1;   
  41.     $writeData = '<?php exit; ?>||'.$_impression_cfg["vid"].'||'.time()."||";   
  42.      if($fp = @fopen($_impression_cfg["data"],"w")){   
  43.       if(@fwrite($fp,$writeData)){$st = 1;}   
  44.       fclose($fp);   
  45.      }   
  46.    }else{   
  47.     echo '<p><b>印象应用错误:</b>使用 impression_start() 函数必须在任何数据被输出到浏览器之前。</p>';   
  48.    }   
  49.    }else{   
  50.     echo '<p><b>印象应用错误:</b>发生一个错误,印象数据创建失败,请检查相关权限。</p>';   
  51.    }   
  52.    break;   
  53.   }   
  54.  }   
  55. }   
  56. }   
  57.   
  58. //应用印象数据   
  59. function impression_apply(){   
  60. global $_impression,$_impression_cfg;   
  61. $st = 0;   
  62. $writeData = '<?php exit; ?>||'.$_impression_cfg["vid"].'||'.time()."||";   
  63. foreach($_impression as $n => $v){   
  64.  $n = str_replace(array('|',""),array('\|',"\\\\r\\\\n"),$n);   
  65.  $v = str_replace(array('|',""),array('\|',"\\\\r\\\\n"),$v);   
  66.  $writeData .= $n.'||'.$v."||";   
  67. }   
  68. if($fp = @fopen($_impression_cfg["data"],"w")){   
  69.  if(@fwrite($fp,$writeData)){$st = 1;}   
  70.  fclose($fp);   
  71. }   
  72. if(!$st){echo '<p><b>印象应用错误:</b>发生一个错误,印象数据存储失败,请检查相关权限。</p>';}   
  73. return $st;   
  74. }   
  75.   
  76. //卸载印象数据   
  77. function impression_unset(){   
  78. global $_impression,$_impression_cfg;   
  79. $writeData = '<?php exit; ?>||'.$_impression_cfg["vid"].'||'.time()."||";   
  80. if($fp = @fopen($_impression_cfg["data"],"w")){   
  81.  if(@fwrite($fp,$writeData)){$st = 1;}   
  82.  fclose($fp);   
  83. }   
  84. }   
  85. ?>  

和 Setcookie() 一样,在开始使用时 impression_start() 函数必须在任何数据被输出到浏览器之前进行调用,得到的全局变量是 $_impression ,在页面中要获取或存取值直接把值赋给 $_impression[] :

PHP代码
  1. <?php   
  2. require 'impression.func.php'//调用函数文件   
  3.   
  4. impression_start(); //开始印象应用   
  5.   
  6. $_impression["hello"] = "http://www.vgot.cn";   
  7. $_impression["world"] = "哈哈哦哈哈";   
  8. $_impression["你好世界"] = "http://
    ww
    w.vgot.cn"//可以存储带有换行的字符串,但是不可以存储数组和类等   
  9.   
  10. impression_apply();   
  11. //要想印象内容被存储并在其它页面被调用,必须使用impression_apply()函数,此函数的功能就是把之前被赋值的$_impression变量存储进数据库   
  12.   
  13. //如果想要清除印象当前会话的所有数据,则可以使用impression_unset()函数,这样,$_impression的内容就为空   
  14.   
  15. ?>  
PHP代码
  1. <?php //test.php   
  2. require 'impression.func.php'//调用函数文件   
  3.   
  4. impression_start(); //开始印象应用   
  5.   
  6. echo $_impression["hello"]; //输出 "http://www.vgot.cn"   
  7. echo $_impression["world"]; //输出 "哈哈哦哈哈"   
  8. echo $_impression["你好世界"]; 
  9. /*输出 "http://
    www.vgot.cn"
  10. */
  11.   
  12.   
  13. ?>  

希望大家能够多给意见把它变得更好玩~

评论 共有 0 条评论

暂无评论,快发表你的评论吧。