0

嗨,我正在制作一个在提交表单时返回自身的 php 页面,但是 php 内部有一个案例,当它为 true 时,应该执行 header("Location: url") 函数。

有可能这样做吗?

        <form action="" method="post">
      <input type="text" name="username" value="" />
        <?php
 if (isset($_POST['submitted'])) {

$username = $_POST['username'];

        $qryS="SELECT * FROM student WHERE ID='$username';";
        $resultS=mysql_query($qryS);
            if($resultS){
            if(mysql_num_rows($resultS)>=1) {

            header("location: studentprofile.php");
            }}
                else {

            echo"<p><small> There was an error</p>";

            }   
}

         ?>
      <input type="submit" name="submitted" value="Submit" /></p>

    </form>
4

5 回答 5

3

已发送数据 (HTML) 后,您将无法发送任何标题。如果您在输出任何内容之前将 if 子句和 header() 调用移至 - 没有问题。

于 2013-04-03T19:44:18.427 回答
0

是的,这是可能的(只要没有输出发送到浏览器——您可以在您的情况下使用输出缓冲)。您只需要确保逻辑可以防止重定向循环。

于 2013-04-03T19:43:54.613 回答
0

你应该header("location: studentprofile.php");在任何事情之前使用。在文件顶部的 html 标记之前使用它。

于 2013-04-03T19:44:28.957 回答
0
<?php
if (isset($_POST['submitted'])) {

    $username = mysql_real_escape_string($_POST['username']);

    $qryS = "SELECT * FROM student WHERE ID='$username'";
    $resultS = mysql_query($qryS);

    // changed to == 1, you probably only want to select one record
    if(mysql_num_rows($resultS) ==1) {
        header("location: studentprofile.php");
    } else {
        echo"<p><small> There was an error</p>";
    }
}
?>

<form action="?submitted" method="post">
<input type="text" name="username" value="" />
<input type="submit" name="submitted" value="Submit" /></p>
</form>
于 2013-04-03T19:51:52.370 回答
-1

您可以使用 JavaScript。

例如:

<?php
...
if(mysql_num_rows($resultS)>=1) {
    ?>
    <script>
    window.location = 'studentprofile.php';
    </script>
    <?php
}}
于 2013-04-03T19:54:28.667 回答