2014-02-14 44 views
0

我有一个名为用户的用户名为rob_dewar01和密码0b1a1953c219343f3313f0feae9abbe8的MSSQL表。该密码使用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一起使用。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"); 
    } 
?> 

这里是PHP页面的代码我用来插入用户名和密码到MSSQL表用户:

<?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

向全世界展示您的用户名和密码不是一个好主意 – hanleyhansen

+0

我打算在完成此工作后创建新的用户名和密码。 – Kelsey

+0

是不是这个问题[你有过](http://stackoverflow.com/questions/21788923/php-insert-table-data-code-not-inserting-data-into-mssql-table)其中' MD5()'本身不可用于MSSQL? –

回答

0

我同意@MichaelBerkowski的评论。你应该使用PHP来散列密码。

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

查看here了解更多详情。或者更好的方法是使用一种不受影响的不同的哈希算法,并考虑向哈希密码添加一个盐值并对输入进行消毒。

+0

现在就工作,谢谢。 – Kelsey