Php 登录页面循环

Php 登录页面循环,php,forms,Php,Forms,我对PHP非常陌生,但我决定尝试在我的测试网站上创建一个简单的登录页面,看看它是如何工作的。我知道这不是很安全,但我还不太担心。我遇到的问题是,当我尝试登录时,无论用户名是否正确,我都会立即重定向到登录页面。我甚至不认为PHP脚本会检查用户名和密码,因为当我使用不正确的用户名或密码时,会得到相同的结果。我不完全确定这是否是一个PHP问题,因为表单是HTML格式的,如果不是,很抱歉 登录页面: <? include"includes/head.inc"; ?> <div

我对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");
}

?>

可能导致这种情况的原因:

session_start();
if($login_username=="") {
您指的是会话中的某些内容;您应该这样做:

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

另一个小问题:

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

session_start();


最后,学习PDO;另请参见此处警告继续使用
mysql\uquot
函数的页面:

请不要将
mysql\uquot
函数用于新代码。它们不再得到维护,社区已开始恢复。看到了吗?相反,你应该学习并使用或。如果你不能决定,将帮助你做出选择。如果你想学习,…。另外,使用预处理语句将修复登录系统糟糕的SQL注入漏洞。不要使用MD5(不安全),也不要使用非安全密码。请参阅上的部分。我添加了这些更改,一切正常,非常感谢!我去阅读更多关于这个PDO。@ MITTENS伟大,如果这有助于你认为它是通过点击旁边的复选标记接受:嗯,这是奇怪的。自上次测试以来,我没有对站点、服务器或脚本进行任何更改,但现在它不再工作了,与以前做了相同的事情。。我想知道是不是我的数据库出了问题,但它甚至没有出现任何错误,只是重新加载了登录页面。有人知道发生了什么吗?它可能是循环的,因为您忘记在login.php中检查mysql_num_rows()。相反,您要检查mysql_query()是否返回false,但因为您添加了“or die()”,所以在这一点上它将是真实的。@mittens您收到我之前的评论了吗?
<?
$username=$_POST['username'];
$password=$_POST['password'];

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