gpt4 book ai didi

php - 密码系统不执行任何操作

转载 作者:行者123 更新时间:2023-11-29 21:50:15 26 4
gpt4 key购买 nike

下面的代码是一个登录系统。用户名是管理员,密码是密码(您可以稍后更改),它现在所做的是在发送表单后,它只显示登录页面。我找不到它有什么问题。请帮忙。 error_log 文件没有显示任何内容。可能是密码哈希值不正确。当我使用

设置密码时
echo password_hash("password", PASSWORD_DEFAULT);

然后插入结果。

<?php
session_start();
$message="";
require 'settings.php';


if(count($_POST)>0) {


$username = mysqli_real_escape_string($_POST['user_name']);
$password = mysqli_real_escape_string($_POST['password']);

$result = mysqli_query("SELECT * FROM members WHERE username='" . $username . "'");
$row = mysqli_fetch_array($result);
if(is_array($row)) {
$hash = $row['password'];
$passwordcheck = password_verify($password, $hash);
}
if($hash == $passwordcheck){
$_SESSION["user_id"] = $row['id'];
$_SESSION["user_name"] = $row['username'];
} else {
$message = "Invalid Username or Password!";
}
if(isset($_SESSION["user_id"])) {
mysqli_query("DELETE * FROM LoginAttempts WHERE IP='".$ip."'");
header("Location:dashboard.php");
}
}
?>
<div class="panel-body">
<form name="frmUser" method="post" action="">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="Username" name="user_name" type="username" autofocus>
</div>
<div class="form-group">
<input class="form-control" placeholder="Password" name="password" type="password" value="">
</div>
<input type="submit" name="submit" value="Submit" class="btn btn-success btn-lg btn-block">
</fieldset>
</form>
<?php
if($locked == 'yes'){
echo "Sorry you are locked out of the system. Please try again in";
echo $timeleft;
}
?>
</div>

编辑:现在我收到这些错误:[2015 年 11 月 15 日 07:00:58 欧洲/莫斯科] PHP 警告:mysqli_connect(): (28000/1045):/home 中的用户“laughin1”@“176.31.10.37”(使用密码:NO)访问被拒绝/laughin1/public_html/admin/index.php 第 9 行[2015 年 11 月 15 日 07:00:58 欧洲/莫斯科] PHP 警告:mysqli_select_db() 需要 2 个参数,其中 1 个在/home/laughin1/public_html/admin/index.php 第 10 行给出[2015 年 11 月 15 日 07:00:58 欧洲/莫斯科] PHP 警告:mysqli_real_escape_string() 需要 2 个参数,其中 1 个在/home/laughin1/public_html/admin/index.php 第 11 行给出[2015 年 11 月 15 日 07:00:58 欧洲/莫斯科] PHP 警告:mysqli_real_escape_string() 需要 2 个参数,其中 1 个在/home/laughin1/public_html/admin/index.php 第 12 行中给出[2015 年 11 月 15 日 07:00:58 欧洲/莫斯科] PHP 警告:mysqli_query() 期望参数 1 为 mysqli, bool 值在/home/laughin1/public_html/admin/index.php 第 14 行给出[2015 年 11 月 15 日 07:00:58 欧洲/莫斯科] PHP 警告:mysqli_fetch_array() 期望参数 1 为 mysqli_result,第 15 行/home/laughin1/public_html/admin/index.php 中给出的 null

但是如果我将 MySQLi 更改为 MySQL,一切都很好。

最佳答案

当用户注册时,您将使用 password_hash 哈希其密码并存储在数据库中,当用户尝试登录时,您将使用 password_verify 验证其密码

程序:

register->password_hash()->save_in_db()
login->fetch_hash_column_from_their_username->password_verify()
if verified->set_session->redirect, else stay_in_the_same_page

向您的表单添加一些验证,以便用户无法不断访问您的数据库,这会产生高负载并(稍微)阻止对您的网站的某些保护

此外,在这一行之后

header("Location:dashboard.php");

添加

exit();

有关原因的更多信息,请单击此处 Why I have to call 'exit' after redirection through header('Location..') in PHP?

更新:

password_verify 接受两个参数,( string $password , string $hash ),您将把登录密码作为第一个参数,并输入从数据库存储的哈希值进入第二个参数。如果匹配则返回 true,否则返回 false

关于php - 密码系统不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33715463/

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