MSSQL PHP身份验证系统未登录

时间:2014-02-14 21:21:52

标签: php sql-server

我有一个名为users的MSSQL表,其用户名为rob_dewar01,密码为0b1a1953c219343f3313f0feae9abbe8。密码使用PHP代码作为MD5放入表中,并转换为KingDozer而不使用MD5。有一个名为login.php的页面,其中包含一个带有两个输入的表单,用户可以在其中输入用户名和密码。当用户点击提交时,login.php将发送到check.php页面。然后check.php应检查用户名和密码是否正确,然后将用户发送到管理页面。如果用户名和密码不正确,check.php页面会将用户发送回login.php页面。我的问题是,当我尝试将用户名rob_dewar01和密码KingDozer正确输入login.php页面并点击提交时,它会立即将我发送回login.php页面。我不确定这是否正在发生,因为它正在与MSSQL或PHP一起使用。

这是login.php页面代码:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <title>Login to === Back-end</title>
  </head>

  <body>
    <form method="POST" action="check.php">
      Username:<br />
      <input type="text" name="username" />
      <br /><br />
      Password:<br />
      <input type="password" name="password" />
      <br /><br />
      <input type="submit" id="subbut" value="Submit" />
    </form>
  </body>
</html>

以下是check.php的所有PHP代码:

<?php
  session_start();

  if($_SERVER['REQUEST_METHOD'] == "POST") {
$conn=mssql_connect('gsom','Gser','Ros1!');
mssql_select_db('GBsr',$conn);
if(! $conn )
{
  die('Could not connect: ' . mssql_get_last_message());
}

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

    $result = mssql_query("SELECT * FROM users WHERE username='$username' AND
      password=md5('$password')");
  if(mssql_num_rows($result) > 0) {
      $_SESSION['is_logged_in'] = 1;
    }
  }

  if(!isset($_SESSION['is_logged_in'])) {
    header("location:login.php");
  } else {
    header("location:careers/managecareers.php");
  }
?>

以下是用于在MSSQL表用户中插入用户名和密码的PHP页面代码:

<?php
$conn=mssql_connect('gbscom','GBser','Robs!');
mssql_select_db('Gser',$conn);
if(! $conn )
{
  die('Could not connect: ' . mssql_get_last_message());
}

mssql_query($conn,"INSERT INTO Users (username, password)
VALUES ('rob_dewar01', md5('KingDozer'))");


if (!mssql_query) {
    // The query has failed, print a nice error message
    // using mssql_get_last_message()
    die('MSSQL error: ' . mssql_get_last_message());
}

mssql_close($conn);
?>

感谢任何帮助。谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

我同意@MichaelBerkowski的评论。您应该使用PHP哈希密码。

$password = md5($_POST['password']);

有关详细信息,请参阅here。或者更好的是使用不受影响的不同哈希算法,并考虑在哈希密码中添加盐并清理输入。