为什么这个PHP登录表单不起作用?

时间:2014-03-13 13:40:08

标签: php forms login content-management-system

我正在尝试创建一个登录表单,但它无效。

这是login.php文件的代码

<?php
session_start();
if(isset($_SESSION['user'])) {
    header('location: index.php');
}
?>
<html>
<head>
    <title>Basic CMS - Login Area</title>
</head>
<body>
<form action="dologin.php" method="post">
    <table>
        <tr>
            <td><span>Username:</span></td>
            <td><input type="text" name="username" /></td>
        </tr>
        <tr>
            <td><span>Password:</span></td>
            <td><input type="password" name="password" /></td>
        </tr>
        <?php
        if (isset($message)) {
        echo "<tr><td colspan='2'>" . $message . "</td></tr>";
        }
        ?>
        <tr>
            <td colspan="2" align='right'><input type="submit" name="login" 
 value="login" /></td>
        </tr>
    </table>
</form>
</body>
</html>

这是dologin.php文件的代码

<?php
include('includes/functions.php');
session_start();

if (isset($_POST['login'])) {
    if (isset($_POST['username']) {
        if (isset($_POST['password'])) {
            $username = $_POST['username'];
            $query = mysql_query("SELECT * FROM users WHERE Username = '$username'") or die(mysql_error());
            $user = mysql_fetch_array($query);

            if (md5($_POST['password']) == $user['Password'] {
                $message = "Login succesful";
                $_SESSION['user'] = $user['Username'];
                header('location: index.php');
            }
            else {
                $message = "Please check your login details";
                include('login.php');
            }
        }
        else {
            $message =  "Please check your password!";
                include('login.php');
        }
    }
    else {
        $message =  "Please check your username!";
                include('login.php');
    }
}
else {
    $message =  "Please check that you filled out the login form!";
                include('login.php');
}

?>

当我在login.php上提交表单时,它会重定向到dologin.php,但是没有任何内容显示,没有错误或表单本身。只是一个空白页面,我在表单中填写的内容并不重要。

请提供帮助。

3 个答案:

答案 0 :(得分:3)

嗯,你没有在这一行上正确地关闭你的括号:

if (isset($_POST['username']) {

将来,请在此处发布问题之前检查您的错误日志。或者更好的是,将error_reporting(E_ALL);置于所有脚本的顶部,直到您对他们正常工作感到满意为止。

只是重申@Quentin的评论 - 你绝对不应该再使用旧的mysql命令了,并且将用户提供的数据直接放入数据库查询中确实是在寻找麻烦。

答案 1 :(得分:1)

你需要关闭php标签或回复它。这是一个例子:

<?php
if (isset($message)) {
    echo '<tr><td colspan="2">'. $message .'</td></tr>';
}
?>

答案 2 :(得分:1)

你在这里也有错误:

if (md5($_POST['password']) == $user['Password'] {

你错过了一个结束括号。它应该是这样的:

if (md5($_POST['password']) == $user['Password']) {