走过平凡人生、留下平凡足迹 注册 | 登陆

自定义SESSION(一)——文件

1、按默认方式测试。
 推荐先把session手册上的函数看看。
 首先修改php.ini文件中的一些配置,把session.save_path修改下,方便调式。比如我修改成“E:/PCTI/TMP”。保存重启apache
 书写测试文件test.php


<?
error_reporting
(E^ALL
);
session_start
();
$_SESSION['username']='test'
;
?>
<a href='next.php'>next</a>



  next.php


<?
session_start
();
print_r($_SESSION
);
print_r($_COOKIE
);
?>


在浏览器中访问。

 首先,打开我们设置的session保存路径,比如我的是E:/PCTI/TMP,果然在里面产生了一个文件。文件名是sess_****,而且****恰好是$_COOKIE['PHPSESSID']。
 和我想象中的一样。

  2、测试session_set_save_handler
 首先删除了session保存文件夹中的session文件。
 这里我使用的是手册里面的例子。


<?php
function open($save_path$session_name
)
{
  global 
$sess_save_path$sess_session_name
;
       
  
$sess_save_path $save_path
;
  
$sess_session_name $session_name
;
  return(
true
);
}

function 
close
()
{
  return(
true
);
}

function 
read($id
)
{
  global 
$sess_save_path$sess_session_name
;

  
$sess_file "$sess_save_path/sess_$id"
;
  if (
$fp = @fopen($sess_file"r"
)) {
    
$sess_data fread($fpfilesize($sess_file
));
    return(
$sess_data
);
  } else {
    return(
""); 
// Must return "" here.
  
}

}

function 
write($id$sess_data
)
{
  global 
$sess_save_path$sess_session_name
;

  
$sess_file "$sess_save_path/sess_$id"
;
  if (
$fp = @fopen($sess_file"w"
)) {
    return(
fwrite($fp$sess_data
));
  } else {
    return(
false
);
  }

}

function 
destroy($id
)
{
  global 
$sess_save_path$sess_session_name
;
       
  
$sess_file "$sess_save_path/sess_$id"
;
  return(@
unlink($sess_file
));
}

/*********************************************
* WARNING - You will need to implement some *
* sort of garbage collection routine here.  *
*********************************************/
function gc($maxlifetime
)
{
  return 
true
;
}

session_set_save_handler("open""close""read""write""destroy""gc"
);

session_start
();

// proceed to use sessions normally

$_SESSION['username']='test'
;
?>
<a href='next.php'>next</a>



    重新设置了。。结果和刚才一样。呵呵,那我们怎么知道我们自定义session处理成功了呢?

  修改下保存session的文件名看看,把代码中的$sess_file = "$sess_save_path/sess_$id";都改成$sess_file = "$sess_save_path/my_new_sess_$id";重新运行看看。

  哟,果然改变了。说明自定义session处理成功。

Tags: php, session

« 上一篇 | 下一篇 »

Trackbacks

点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5

发表评论

评论内容 (必填):