age;
function output() {
echo $this->age;
}
function setAge($age) {
$this->age = $age;
}
}
?>
setage.php
session_start();
require_once "person.php";
$person = new person();
$person->setAge(21);
$_SESSION['person'] = $person;
echo "
check here to output age";
?>
output.php
// 设置回调函数,确保重新构建对象。
ini_set('unserialize_callback_func', 'mycallback');
function mycallback
($classname) {
$classname . ".php";
}
session_start();
$person = $_SESSION["person"];
// 输出 21
$person->output();
?>
当我们执行 setage.php 文件的时候,调用了 setage() 方法,设置了年龄为 21,并将该状态序列化后保存在 Session 中(PHP 将自动完成这一转换),当转到 output.php 后,要输出这个值,就必须反序列化刚才保存的对象,又因为在解序列化的时候需要实例化一个未定义类,所以我们定义了以后回调函数,自动包含 person.php 这个类文件,因此对象被重构,并取得当前 age 的值为 21,然后调用 output() 方法输出该值。
另外,我们还可以使用 session_set_save_handler 函数来自定义 Session 的调用方式。
--------------------------------------------------------------------------------------------------------------
一直搞不清楚 PHP 里面关于 Session Time Out 的时间控制,这里稍微总结一下,做个纪录。
php.ini 的关于 Session 的设置
① 是否要 cache ? ==> NO!
在 http 的 header 里面输出一些关于 session 的 cache(??对具体定义不是很清楚) ,虽然这个和 Session 的 time out 没有什么直接的联系,但从历来的经验来讲,会出现一些很奇怪的现象,所以这里统一将 cache 关闭,使得 header 里面不出现 session 的信息。
; Set to {nocache,private,public,} to determine HTTP caching aspects
; or leave this empty to avoid sending anti-caching headers.
session.cache_limiter = nocache
; Document expires after n minutes.
session.cache_expire = 180
② 关于 garbage
; Define the probability that the 'garbage collection' process is st