gpt4 book ai didi

php - 数据库条目 php 上的密码哈希值被更改

转载 作者:行者123 更新时间:2023-11-29 22:38:54 25 4
gpt4 key购买 nike

使用password_hash()对密码进行哈希处理并将其存储在DB中,它不会通过password_verify。我尝试测试这些功能,只是在数据库之外运行一个单词,效果很好。而且,如果我散列一个单词,然后手动将其放入数据库中,它就可以在登录中正常工作。但是,当我通过代码/SQL 将哈希输入数据库时​​……此时哈希显然发生了一些事情,导致它无法使用(据我所知)。我不明白是什么。我检查了我的表..看起来不错,Varchar(255) utf8_bin。
我正在使用 codeigniter 框架。 Codeigniter 会转义它的插入,除非您使用如下所示的设置并使用 FALSE - 不起作用。

function register($data){
$this->db->set($data, FALSE);
$this->db->set('word_of_passing', $data['word_of_passing'], FALSE);
$this->db->insert('cred');
}

这不起作用 -

function register($data){
$this->db->query('INSERT INTO cred (user_name, word_of_passing) VALUES ("'.$data['user_name'].'", "'.$data['word_of_passing'].'")');
}

这不起作用 -

function register($data){
$this->db->insert('cred', $data);
}

最后我只是尝试完全脱离 codeigniter ,但没有成功 -

$servername = "localhost";
$username = "root";
$password = "";
$dbname = "moviedb";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO cred (user_name, word_of_passing) VALUES ('".$data['user_name']."', '".$data['word_of_passing']."')";

if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();

我的 Controller 是这样的 -

public function check_pw(){
//password and username post
$data = $this->input->post('username');
$password = $this->input->post('password');
//pass username to model to retrieve stored hash
$this->load->model('lindsdata');
$return_data = $this->lindsdata->password($data);
//$pw is indeed getting the stored hash, but not passing
$pw = password_verify($password, $return_data[0]['word_of_passing']);
if ($pw == 1) {
$this->session->set_userdata(array("logged_in" => "true",
"user_id" => $return_data[0]['user_id']
));
redirect('/update/user', 'location');
}else{
$error['the_error'] = 'Your Credentials are wrong';
}
}

我所能想到的就是它必须是我的数据库中的设置或其他什么?我真的很困惑。

最佳答案

如果您在数据库中插入问题,我建议您添加类似的模型函数,就像 Controller 输入模型名称和函数一样

class Lindsdata extends CI_Modle{
public function password(){
$data = array(
'user_name' => $this->input->post('username'),
'word_of_passing' => $this->input->post('password'),
);

$query = $this->db->insert('cred',$data);
if($query)
{
return true;
}
else
{
return false;
}
}
}

像这样进入 Controller

   $this->load->model('lindsdata');
$return_data = $this->lindsdata->password();

关于php - 数据库条目 php 上的密码哈希值被更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29442682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com