0

我一直试图在 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>
4

2 回答 2

1

给出的所有答案在技术上都是正确的,你设置逻辑的方式是不正确的……举个例子,把它移植到你自己的代码中。

<?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>
于 2013-05-23T16:55:14.747 回答
0

循环在这里:

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

如果$_POST未设置值,则会发生重定向。由于您没有在重定向之前设置值,因此它再次发生。然后再次。然后再次...

$_POST若要更正此问题,如果未设置值,请显示您的表单。

于 2013-05-23T16:46:54.797 回答