使用X时间后过期的变量

时间:2012-11-09 13:56:20

标签: php security

当使用X时间时,是否可以创建一个取消变量的函数?

我知道unset()及其运作方式。 出于安全考虑,这将非常方便。

例如,为了自动取消我从MySQL数据库中获取的个人信息,代码中只有1000-2000 unset()看上去太乱了!

1 个答案:

答案 0 :(得分:0)

虽然你的问题没有完全明白,但是这样做的可能性很小:

class ExpiredValue {
    private $data;
    private $access_counter;
    private $max_access;

    public function __construct($data, $max_access) {
        $this->max_access = $max_access;
        $this->__invoke($data);
    }

    public function __invoke($data = null) {
        if(func_num_args() == 0) {
            $this->access_counter++;
            if($this->access_counter > $this->max_access) {
                $this->data = null; // remove data from memory
            }
            return $this->data;
        } else if(func_num_args() == 1) {
            $this->access_counter = 0;
            $this->data = $data;
        }
    }
}

使用方法:

$value = new ExpiredValue("<data>", 3);
echo $value(); // "<data>"
$value("<other data>");
echo $value(); // "<other data>"
echo $value(); // "<other data>"
echo $value(); // "<other data>"
echo $value(); // null

大多数情况下,如果你开始考虑这样的事情,你就会走错路。它有时有助于退后一步,找出真正的问题所在。你的问题并不是真的没有可能使变量失效。