【发布时间】:2016-03-14 19:17:10
【问题描述】:
最近在我的登录处理程序中发现了一个问题。问题是,即使输入的密码正确并且与数据库中的密码匹配,脚本仍然会将我发送到错误页面。
session_start();
include ("db.php");
if (isset($_POST['login'])) {
$login = $_POST['login'];
$login = stripslashes($login);
$login = htmlspecialchars($login);
$login = trim($login);
if ($login == '') {
unset($login);
}
}
if (isset($_POST['password'])) {
$password=$_POST['password'];
$password = stripslashes($password);
$password = htmlspecialchars($password);
$password = trim($password);
$password = hash("md5",$password);
if ($password =='') {
unset($password);
}
}
if (empty($login) or empty($password))
{
exit (header('location:index.php'));
}
$result = mysql_query("SELECT * FROM users_data WHERE login='$login'");
$row = mysql_fetch_array($result);
if (empty($row['password']))
{
exit (header('location:mistake.php'));
}
else {
if ($row['password']==$password) {
$_SESSION['login']=$row['login'];
$_SESSION['users_id']=$row['users_id'];
header('location:first.php');
}
else {
header('location:mistake.php');
}
}
HTML 表单:
<form action="login.php" method="post" class="login">
<label><span>Login:</span>
<input name="login" type="text" size="20" maxlength="100">
</label>
<label><span>Password:</span>
<input name="password" type="password" size="20" maxlength="100">
</label>
<p>
<input type="submit" name="submit" class ="submit" value="Login">
</p>
UPD:感谢您的回答,我终于找到了问题所在 - 我只是在数据库中指定的密码值长度不足。
【问题讨论】:
-
密码是什么,您在数据库中为您正在尝试的用户存储了什么?
-
echo $row['password'] 和 echo $password 并在这里发帖
-
也使用
mysqli代替mysql。不推荐使用 Mysql。 -
请stop using
mysql_*functions。 These extensions 已在 PHP 7 中删除。了解PDO 和 MySQLi 的 prepared 语句并考虑使用 PDO,it's really pretty easy。 -
这里有太多的条件语句可能会在某个地方搞砸。如果我是你,我不会再在这上面浪费时间,而是使用已经证明有效并且值得本世纪使用的东西。 stackoverflow.com/a/34158109