登录页面循环

时间:2012-06-14 13:40:15

标签: php html-form

我对PHP很陌生,但我决定尝试在我的测试网站上创建一个简单的登录页面,只是为了看看它是如何工作的。我知道它不是很安全,但我对此并不担心太多。我遇到的问题是当我尝试登录时,无论用户名是否正确,我都会立即重定向到登录页面。我不认为它甚至会去检查用户名和密码或任何东西的PHP脚本,因为当我使用不正确的用户名或密码时,我得到相同的结果。我不完全确定这是否是一个PHP问题,因为表单是用HTML格式的,所以很抱歉,如果不是。

登录页面:

<?
include"includes/head.inc";
?>

    <div class="login" align="center";>

    <h1>Log In</h1>

    <form action="/cp/login.php" method="post">

        <table border="0" cellspacing="2" cellpadding="2">
            <tr>
                <td>
                    Email
                </td>
                <td>
                    <input type="text" name="username">
                </td>
            </tr>
            <tr>
                <td>
                    Password
                </td>
                <td>
                    <input type="password" name="password">
                </td>
            </tr>
        </table>

        <input type="submit">

    </form>

    </div>

    <?
    include"includes/footer.inc";
    ?>

的login.php:

<?
$username = $_POST['username'];
$password = $_POST['password'];

session_start();
include"../includes/connect.inc";

$q = "SELECT * from users where email='$username' and password='MD5($password)'";
$result = mysql_query($q, $connection) or die
("Could not execute query : $q." . mysql_error());

if (!$result) {

    echo "<h1>Incorrect username or password.</h1>";

}
else {
    $r              = mysql_fetch_array($result);
    $login_username = $r["email"];
    session_register("login_username");
    Header("Location: protected.php");
}

?>

Protected.php:

<?
session_start();
if ($login_username == "") {
    Header("Location: ../login.php");
}
else {
    include"../includes/head.inc";
    include"../cp.inc";
    include"../includes/footer.inc";
}
?>

我包含所有文件以防万一它们是需要的,但它似乎只是循环登录页面,而不是循环通过其他文件。我输入的用户名和密码是正确的,并且在我重写之前在我之前的登录系统中工作,以使其更好地工作。我希望我不会错过任何愚蠢或明显的东西。谢谢你的阅读。

1 个答案:

答案 0 :(得分:1)

可能导致此问题:

session_start();
if($login_username=="") {

你指的是会话中的内容;这就是你应该怎么做的:

session_start();
if (!isset($_SESSION['login_username']) || $_SESSION['login_username']=="") {

另一个小问题:

<?
$username=$_POST['username'];
$password=$_POST['password'];

session_start();

您应该先尝试$_POST密钥,然后再尝试访问它们。

if (!isset($_POST['username'], $_POST['password'])) {
    die("Invalid page request");
}
session_start();
$username=$_POST['username'];
$password=$_POST['password'];

最后但并非最不重要的是,学习PDO;另请参阅此处的页面,警告继续使用mysql_函数:http://uk.php.net/manual/en/function.mysql-connect.php