session函数:有关session的几个补充函数

  在PHP下有关session讨论很多其实在PHP4中还有几个是我们平时没有注意到

  下面我把它们介绍给大家吧

  其中session__save_handler可真是个好东西

  //********************

  session_un (PHP4 >= 4.0b4)

  void session_un(void);

  这个可以把当然注册所有session变量置为空注意它不是unregister也区别于destroy

  下面这个例子对此做了很好介绍说明

<?php
  
session_register('a','b','c'); //auto-session-start
$a=1;
$b=2;
$c=3;
session_unregister('a'); //unregistrered $a
echo "A: $a - reg:".session_is_registered('a')."
"; // but the global $a res
session_un; // uns $b und $c
echo "B:$b - reg:".session_is_registered('b')."
"; // the registration res !
echo "C:$c - reg:".session_is_registered('c')."
";
echo session_encode;
?>


  输出:

  A: 1 - reg:

  B: - reg:1

  C: - reg:1

  !b|!c|

  //********************************

  session_get_cookie_params (PHP4 >= 4.0RC2)

  .gif' /> session_get_cookie_params (void);

  返回记录了当前sessioncookie些信息

  有:

  "letime" - cookie生存期

  "path" - cookie保存路径

  "do" - cookie

  //*******************************

  session__cookie_params (PHP4 >= 4.0b4)

  void session__cookie_params ( letime [, path [, do]])

  设置sessioncookie些参参数类似于php.ini中设置但本所作设置只对当前脚本文件有效

  //*******************************

  下面要介绍这个应是对大家都很有用你是不是对自定义个不用cookie来保存session有兴趣呢?这个就可以实现你这样设想

  让我想想如果不用cookie好处是什么?至少你不用担心客户端cookie功能是否打开了对吧

  session__save_handler (PHP4 >= 4.0b4)

  void session__save_handler ( open, close, read, write, destroy, gc)

  这个可以定义用户级session保存(打开、关闭、写入等)

  比如我们想把session保存在本地个数据库中时就很有用了

  !!!注意:使用本先要配置php.ini文件session.save_hadler=user 否则session__save_handler不会生效

  此外根据我测试你如果想让这样session跨页面使用还要在每个用到session脚本文件中加入你自定及session__save_handler所以最好思路方法是做成个单独文件在每个要用到session脚本中用来包含进来

  下面这个例子提供了个最基本session保存法类似于默认files思路方法

  如果你想用数据库来实现这也是很容易做到

  Example 1. session__save_handler example

<?php
  
function open ($save_path, $session_name) {
global $sess_save_path, $sess_session_name;
  
$sess_save_path = $save_path;
$sess_session_name = $session_name;
(true);
}
  
function close {
(true);
}
  
function read ($id) {
global $sess_save_path, $sess_session_name;
  
$sess_file = "$sess_save_path/sess_$id";
($fp = @fopen($sess_file, "r")) {
$sess_data = fread($fp, filesize($sess_file));
($sess_data);
} {
("");
}
  
}
  
function write ($id, $sess_data) {
global $sess_save_path, $sess_session_name;
  
$sess_file = "$sess_save_path/sess_$id";
($fp = @fopen($sess_file, "w")) {
(fwrite($fp, $sess_data));
} {
(false);
}
  
}
  
function destroy ($id) {
global $sess_save_path, $sess_session_name;
  
$sess_file = "$sess_save_path/sess_$id";
(@unlink($sess_file));
}
  
/*********************************************
* WARNING - You will need to implement some *
* sort of garbage collection routine here. *
*********************************************/
function gc ($maxletime) {
true;
}
  
session__save_handler ("open", "close", "read", "write", "destroy", "gc");
  
session_start;
  
// proceed to use sessions normally
// 现在你就可以象往常样地使用session了
  
?>
  
//***************************************
  
session_cache_limiter (PHP4 CVS _disibledevent= session_cache_limiter;
  
echo "The cache limiter is now to $cache_limiter<p>";
?>
  
//*****************************




Tags:  session函数

延伸阅读

最新评论

发表评论