一般来说session与cookie是很好的一个验证组合。优其是session在安全性能上比cookie有一定的优势。
大家都知道,session是有生命期的。可以用session_set_save_handler来进行定制存储。我的session就是保存在数据库中的,所以对所有session的变量都有比较长的生命期。有时候需要用到不同页面传递参数时,用GET或POST都不如session安全,并且使用session很方便。但是,一个传递参数不需要session的生命期的时间这么长。是临时的。当一个传递参数生成后。又可能用户提交后,这个传递参数就不需要了。或者用户根本就不提交。这就要设定一个session的临时生命变量。
翻遍了整个网络,并没有找到这样的先例。
这个过程,几天后,才想到的。
现在就跟我来分析一下,session的例子。
<?php
session_start();//页面调用session之前
$_SESSION['abc'] = 123;//赋值
?>
所谓的临时变量,就是定义在一段时间内存在的变量。这,那么,这个变量就需要一个时间属性。比如,$_SESSION['abc']的生存时间是30秒钟。嗯,就用本身session来做吧。定义一个session临时变量,
<?php
$_SESSION['___tmp']['abc']=time() +30;
?>
OK,举出这个例子很明显了。使用了自定义$_SESSION['___tmp']数组做为监视临时变量$_SESSION变量的生存期(正常$_SESSION变量没有)。
html是无状态语言,在另一个网页上再次打开,就遍历$_SESSION['___tmp']数组。删除一些过期的$_SESSION变量。
<?php
if($_SESSION['___tmp']['abc']=< time()){
unset($_SESSION['abc'] );
unset($_SESSION['___tmp']['abc']);
}
?>
这样,就达到了删除临时变量的效果了。知道这个原理后,相信大家可以做更多的用处。
[ 本帖最后由 qh663 于 2006-7-31 08:58 PM 编辑 ]