0

出于某种原因,这是我的代码,它总是返回密码不正确。我不确定我是否只是在某个地方忘记了一个支架,我怎样才能使它更安全,因为现在我正在使用该_post功能。

<?php
  include 'config.php';

  session_start();
  session_destroy();
  session_start();

  $UserName = $_POST['UserName'];
  $PassWord = $_POST['PassWord'];

  if ($UserName&&$PassWord)
  {
    mysql_select_db("SegmentMath") or die ("Couldn't find database sorry.");   
    $query = mysql_query("SELECT * FROM Users WHERE UserName='$UserName'");    
    $numrows = mysql_num_rows($query);

    if ($numrows!=0)
    {
      // code to login
      while ($row = mysql_fetch_assoc($query))
      {
        $dbUserName = $row['UserName'];
        $dbPassWord = $row['PassWord'];
      }

      //check to see if they match!
      if ($UserName==$dbUsername&&$PassWord==$dbPassWord)
      {
        $_SESSION['UserName']=$dbUsername;
        $_SESSION['PassWord']=$dbPassWord;

        echo "<p>Finished Software</p>";
      }
      else
      {
        echo "Incorrect Password";
      }
    }
    else die("Sorry username not found!");
  }
  else die("Please Enter A Valid Username And Password!");
?>

所以我几乎可以肯定我在做一些愚蠢的错误,它让我难倒了近 30 分钟。这个文件就是login.php这样,如果用户在login.html页面上输入用户名和密码,它就会将该数据推送到这个页面Login.Php

我很困惑为什么它说密码不正确,即使登录正确并且在数据库中也是如此。

4

7 回答 7

2

我会说,最好使用这个,我的意思是创建查询来查找usernamepassword

$login = mysql_query("SELECT * FROM users WHERE ID='". $UserName ."' AND PASSWORD='". md5($PassWord) ."');
$row=mysql_fetch_array($login); // fetch row
if($row!=null)   // if found row 
{
$_SESSION['UserName'] = $row['UserName']; // store in session
$_SESSION['PassWord'] = $row['PassWord']; 
} %>

代替

if (($UserName==$dbUsername)&&($PassWord==$dbPassWord))
{

$_SESSION['UserName']=$dbUsername;
$_SESSION['PassWord']=$dbPassWord;

echo "<p>Finished Software</p>";

}
于 2012-12-20T05:20:10.653 回答
1

您的代码中有错字。PHP 中的变量区分大小写...

19.     while ($row = mysql_fetch_assoc($query))
20.           {
21.             $dbUserName = $row['UserName'];
22.             $dbPassWord = $row['PassWord'];
23.           }
24.     
25.           //check to see if they match!
26.           if ($UserName==$dbUsername&&$PassWord==$dbPassWord)

第21行的变量与第26行的变量不匹配。

$dbUserName不一样$dbUsername

于 2012-12-20T05:30:18.157 回答
0

存储密码时,您可能正在使用某种加密。例如,如果你正在使用md5()(只是一个例子,md5 不是最好的密码)你应该这样检查:

if ($UserName == $dbUsername && md5($PassWord) == $dbPassWord)
{
于 2012-12-20T05:18:47.170 回答
0
if ($UserName==$dbUsername <= capitalize $dbUserName)
{
    //YOUR LOGIC
}
于 2012-12-20T05:30:42.103 回答
0
if ($UserName==$dbUsername&&$PassWord==$dbPassWord)
      {
        $_SESSION['UserName']=$dbUsername;
        $_SESSION['PassWord']=$dbPassWord;

        echo "<p>Finished Software</p>";
      }
      else
      {
        echo "Incorrect Password";
      }

1).它处于其他条件..所以你能把这四个$variables回显给我吗?

2). 用 str_replace 从 $_post 中删除空格

于 2012-12-20T05:34:15.037 回答
0

我认为你编码它错误的方式。您不应该在会话开始后将会话销毁。首先,让我们通过 session_start() 开始会话;

session_start();

$username = $_POST['username'];
$password = $_POST['password'];

$query = "SELECT * FROM table_name WHERE username = '$username'";
$result = mysql_query($query);
$count = mysql_num_rows($query);
$row = mysql_fetch_assoc($result);

if($count == 0)
{
//if there is no result
}
$dbpassword = $row['password'];
if($dbpassword == $password)
{
//put some session here
}
else
{
//if the password is not match
}

我希望这可能会有所帮助

于 2012-12-20T14:07:38.963 回答
-1

您需要先连接到数据库。使用mysql_connect()

另请注意,此功能正在贬值,建议使用 mysqli is 或 PDO。上面的链接中有这些链接。

于 2012-12-20T05:18:28.047 回答