登录会话问题

时间:2012-12-20 05:12:25

标签: php html mysql sql

这是我的代码由于某种原因,它始终返回密码不正确。我不确定我是否忘记了某个地方的括号,我怎么能让它更安全,因为我现在正在使用_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

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

7 个答案:

答案 0 :(得分: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>";

}

答案 1 :(得分: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

不同

答案 2 :(得分:0)

存储密码时,您可能正在使用某种加密技术。例如,如果您使用md5()(仅作为示例,md5不是密码的最佳选择),您应该检查这种方式:

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

答案 3 :(得分:0)

if ($UserName==$dbUsername <= capitalize $dbUserName)
{
    //YOUR LOGIC
}

答案 4 :(得分: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中的空格

答案 5 :(得分: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
}

我希望这可能会有所帮助

答案 6 :(得分:-1)

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

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