我有一个名为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);
?>
感谢任何帮助。谢谢你的帮助。
答案 0 :(得分:0)
我同意@MichaelBerkowski的评论。您应该使用PHP哈希密码。
$password = md5($_POST['password']);
有关详细信息,请参阅here。或者更好的是使用不受影响的不同哈希算法,并考虑在哈希密码中添加盐并清理输入。