php登录,我甚至可以登录输入大写密码,反之亦然

时间:2014-04-14 20:59:50

标签: php

我在我的登录中有这个代码,然后我尝试输入我的密码,例如我的真实密码是" Reymar25",但当我输入" reymar25"它登录,它不应该继续在其他页面。 ,请帮我恢复这个..谢谢你

<?php

include('dbconnection.php');

if (isset($_POST['submit']))
{
    $username = $_POST['username'];$password = $_POST['password'];

    $query = mysql_query("SELECT * FROM tbl_user username = '".$username."' AND password = '".$password."' LIMIT 1");

    //("SELECT * FROM tbl_user WHERE username = '".$username."' AND password =       '".$password."' LIMIT 1"); 

    if (mysql_num_rows($query) == 1)
    {
        $row = mysql_fetch_array($query);
        header("Location: index1.php"); // Modify to go to the page you would like 
        exit; 
    }
    else
    { 
        header("Location: loginform.php"); 
        echo "Please Check Username or Password!";
        exit();
    }
}
?>

3 个答案:

答案 0 :(得分:2)

检查用户名和密码列的排序规则设置。见http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html

(请阅读有关您问题的评论,其中包含有关如何解决代码中其他问题的重要信息)

答案 1 :(得分:0)

关于这个问题:

为什么要重复两次SQL语句? 但是查询是正确的。我想你可能需要使列区分大小写。请参阅this回答。


然而,您实施的机制非常弱:

  1. 可以使用SQL注入。
  2. 以纯文本形式存储密码(如果有) 黑客你的服务器,他/她可以破解它的所有密码,你 应该使用哈希。例如,您可以使用username作为salt来生成哈希,然后检查哈希是否存在于数据库的某个位置。
  3. 您只需在用户输入正确的密码时委派您的页面。为了确保网站安全,您应该在每个页面的标题中检查应该受到保护的密码每次

答案 2 :(得分:0)

我尝试了这段代码并且有效。对不起,如果我不使用PDO,     

if (isset($_POST['submit']))
{
$username = $_POST['username'];
$password = $_POST['password'];


$query = mysql_query("SELECT * FROM tbl_user LIMIT 1");

while($row = mysql_fetch_array($query))
{
if(strcmp($username,$row['username'])==0 && strcmp($password,$row['password'])==0)
{

header("Location: index1.php");

}
else
{
echo "Somethings wrong either on your Username or Password Please Try Again" ;
}
}

}    ?&GT;