[英]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.