gpt4 book ai didi

使用错误密码登录 PHP 仍然有效

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:14 24 4
gpt4 key购买 nike

我已经使用 PHP 和 MySQL 数据库创建了一个登录页面。一切正常,除了当我使用正确的用户名和错误的密码登录时,它仍然将我发送到登录页面并且不会让我留在登录页面上。

<?php
$user = $_POST['user'];
$pass = stripslashes($_POST['pass']);
$pass = mysql_real_escape_string($pass);
$pass = md5($pass);

$connect = mysql_connect("$host", "$ad_user", "$ad_pass") or die("Unable to connect to MySQL");
$db = mysql_select_db("$db", $connect) or die("Could not select examples");

$query = "SELECT * FROM members WHERE username='$user'" or die("error query");
$result = mysql_query($query);
$count = mysql_num_rows($result);
$p = mysql_fetch_array($result);
If($count == 1){
If($p['password'] == $pass){
session_start();
$_SESSION['loggedin'] = 1;
$_SESSION['username'] = $user;
header('Location: //members.polydodo.com');
}else{
header('Location: ../login.php?error');
}
}else{
header('Location: ../login.php?error');
}

mysql_close($connect);
?>

我看不出有任何错误,而且我已经仔细检查了密码加密等顺序。使用错误的用户名会重定向到错误页面并且不会让我登录,但无论密码如何,它都会使用正确的用户名登录。

附言我知道 MySQLi 和 PDO,但还没有时间研究它,所以我坚持使用标准 MySQL,直到我研究为止。

最佳答案

问题在下一行

$query = "SELECT * FROM members WHERE username='$user'" or die("error query");
$result = mysql_query($query);

改成

$query = "SELECT * FROM members WHERE username='$user' LIMIT 1";
$result = mysql_query($query) or die(mysql_error());

更新:

也可以直接在查询中使用密码进行身份验证

  $query = "SELECT * FROM members WHERE username='$user' AND password='$pass' LIMIT 1";
$result = mysql_query($query) or die(mysql_error());

注意 mysql_* 不推荐使用 mysqli_*PDO

关于使用错误密码登录 PHP 仍然有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24905776/

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