PHP网页有一个直接循环错误


PHP webpage has a direct loop error?

我一直试图在PHP中创建一个登录页面,但无济于事,当我尝试运行它时,我一直在得到"此网页有一个重定向循环"错误,所以我想知道是否有人可以发现我的错误?下面是我的代码:

<?php
require_once("nocache.php");
$id = $_POST["id"];
$pword = $_POST["pword"];
if (!empty($_POST){
if (!empty($id) || !empty($pword)){
require_once("dbconn.php");
 $sql = "select username, school_type from school_info where username = '$id' and password = '$pword'";
 $rs = mysql_query($sql, $dbConn);
 if (mysql_num_rows($rs)> 0 ) {
     session_start();
     $_SESSION["who"] = $id;
     $_SESSION["school_type"] = mysql_result($rs,0,"school_type");
     header("location: EOI_home.php");
    }
}
else {
header("location: login.php");}     
} else {
   header("location: login.php");}
?>
<form method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="login">
ID: <input type="text" name="id" /><br/>
pword: <input type="password" name="pword" /><br/>
<input type="submit" value="log in" />&nbsp;
<input type="reset" />
</form>

给出的所有答案在技术上都是正确的,你设置逻辑的方式是错误的…以下面的示例为例,将其移植到您自己的代码中。

<?php
$id = $_POST["id"];
$pword = $_POST["pword"];
if(!empty($_POST)) {
    // The form was submitted, perform validation here.
    if(!empty($id) || !empty($pword)) {
        // Form validation passed, insert into database
    } else {
        // Form validation failed, display an error or redirect back
    }
} else {
    // Form was not submitted, so display the form.
}
?>

编辑我希望不必为你做这些工作(因为这是最好的你学习),但也许看到上面的代码,下面的代码,你可以从中学习?

<?php
require_once("nocache.php");
$id = $_POST["id"];
$pword = $_POST["pword"];
if(!empty($_POST)) {
    if(!empty($id) || !empty($pword)) {
        require_once("dbconn.php");
        $sql = "select username, school_type from school_info where username = '$id' and password = '$pword'";
        $rs = mysql_query($sql, $dbConn);
        if(mysql_num_rows($rs) > 0) {
            session_start();
            $_SESSION["who"] = $id;
            $_SESSION["school_type"] = mysql_result($rs, 0, "school_type");
            header("location: EOI_home.php");
        }
    } else {
        header("location: login.php");
    }
}
?>
<form method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="login">
    ID: <input type="text" name="id" /><br/>
    pword: <input type="password" name="pword" /><br/>
    <input type="submit" value="log in" />&nbsp;
    <input type="reset" />
</form>

循环在这里:

$id = $_POST["id"];
$pword = $_POST["pword"];
if (empty($id) || empty($pword)){
    header("location: login.php"); }

如果没有设置$_POST值,则发生重定向。由于您没有在重定向之前设置值,因此会再次发生这种情况。一次又一次。一次又一次…

若要纠正此问题,请在未设置$_POST值时显示表单。