[英]How can I load a function just once and store the return in a variable?
我目前正在查看用户注册码。 我现在关注的部分是密码哈希部分。
我要做的是从配置文件中获取static_salt,并使用mt_rand()生成dynamic_salt。 我想要做的是将这个dynamic_salt存储在我的数据库中。
但是,如果我将dynamic_salt()方法传递给create方法,以便将其发送到数据库中某个表的salt列,它将再次运行该方法,并创建与hashed()方法产生的结果不同的结果。
实现我想要达到的目标的最佳方法是什么,如果可以,请给我一个例子吗?
public function create() {
$dbcolumn->password = $this->hashed();
$dbcolumn->salt = $this->dynamic_salt;
$this->db->insert('users', $dbcolumn);
}
public function dynamic_salt() {
$get_dynamic_salt = mt_rand();
return $get_dynamic_salt;
}
public function hashed() { //hashing method, that also makes
// sha1 and salt password
$static_salt = $this->config->item('encryption_key'); //grab static salt from config file
$dynamic_salt = $this->dynamic_salt();
$password = $this->encrypt->sha1($this->input->post('password')); //encrypt user password
$hashed = sha1($dynamic_salt . $password . $static_salt);
return $hashed;
}
尝试这个:
public function dynamic_salt() {
if(!isset($this->dyn_salt))
$this->dyn_salt = mt_rand();
return $this->dyn_salt;
}
如果dyn_salt
实例变量尚不存在,它将为它分配mt_rand()
的结果,否则它将仅返回先前的值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.