有没有任何可能的方法可以使用 password_hash()
函数更改“我的用户”表中的所有现有密码?
我用的是ci,根本不起作用!
我的模型
public function EncryptDB($filters = NULL){
$ci =& get_instance();
$ci->load->helper('hash');
$query = "UPDATE users SET password = {hash_password(password)}";
$sql = $this->db->query($query);
}
- 请注意,我正在加载一个自定义
helper
把它搅碎。
我的助手
function hash_password($password){
$configs = array(
"cost" => 10 # custo de processamento (10 -> default)
);
$password = password_hash($password, PASSWORD_DEFAULT, $configs);
return $password;
}
我的控制器
public function EncryptDB(){
if($this->UsersDAO->EncryptDB()){
echo 'done';
} else {
echo 'error';
}
}
1条答案
按热度按时间ghhkc1vu1#
试试这个办法。
此解决方案假定
users
表有一个名为id
.我实际上没有运行/测试这个代码。但它应该给你一个如何解决这个问题的想法。
此代码在事务中运行,因此如果一条记录未能更新,则没有一条记录会更新。
对于固定表,此代码可能只应运行一次。
function updatePasswords(){
```$this->db->trans_start();
$offset = 0;
do{
$selectQuery = $this->db
->limit(100, $offset)
->get('users');
$results = $selectQuery->result();
$this->db->trans_complete();
if ($this->db->trans_status()){
die("[+] operation successfully completed.");
}
else{
die("[-] operation encounted an error somewhere. not data was updated.");
}
```
}