我的HTTP重定向有什么问题?

时间:2009-08-15 11:34:15

标签: php http redirect header

如果他/她正确登录,我正在使用以下代码重定向用户(请参阅代码中的注释)。但是我收到了一个错误。我做错了什么?

<?php
   require 'inc/header.php';
   require 'inc/config.php';
   require 'inc/functions.php';
?>

<?

$login = $_POST['login'];

if($login==1)
{

    $username = mysql_escape_string(trim($_POST['username']));
    $passwd = mysql_escape_string(trim($_POST['passwd']));
            $QUERY = "
                SELECT
                    *
                FROM
                    login
                WHERE
                    username = '$username' and password='$passwd'

            ";

            $result = send_query($QUERY);

            $num_rows = mysql_num_rows($result);
            $flag=0;
            if($num_rows == 0)
            {
                //show_error('Invalid username');
                $flag=1;
            }
            else
            {

               //this is correct login so i am trying to forward but i am geting  error
                //here

               header('Location: admin_home.php');
               exit;

            }

}

?>

<div class="left">
            <div class="left_articles">

                <h2>ADMIN LOGIN</h2>
                 <p class="description"><?if($flag== 1 ) echo "invalid login" ; ?> </p>
                <p><form action="admin.php" method="POST">

                    <table border="0">

                        <tbody>
                            <tr>
                                <td>Username</td>
                                <td><input type="text" name="username" value="" /></td>
                            </tr>
                            <tr>
                                <td>Password</td>
                                <td><input type="password" name="passwd" value="" /></td>
                            </tr>
                            <tr>
                                <td></td>
                                <td><input type="submit" value="Login" /></td>
                            </tr>
                            <tr>
                                <td></td>
                                <td></td>
                            </tr>
                        </tbody>
                    </table>
                    <input type="hidden" name="login" value="1" />
                </form>
                </p>
            </div>

            <B> AFTER LOGING INTO ADMIN PANEL YOU CAN DO FOLLOWING THINGS <B>
            <p align="center">
                <ul>
                    <li>Add new Jobtype</li>
                    <li>Add new Questions</li>
                    <li>Modify Selection Cretiria</li>
                </ul>    
            </p>
        </div>

        <div id="right">
            <div class="boxtop"></div>
            <div class="box">
                <p><img src="images/image.gif" alt="Image" title="Image" class="image" /><b>Akshay ipsum dolor sit amet</b><br />consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis.<br /></p>
                <div class="buttons"><p><a href="#" class="bluebtn">Read</a> <a href="#" class="greenbtn">Mark</a></p></div>
            </div>

            <div class="boxtop"></div>
            <div class="box">
                <p><img src="images/image.gif" alt="Image" title="Image" class="image" /><b>Pako dolor sit amet</b><br />consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis.<br /></p>
                <div class="buttons"><p><a href="#" class="bluebtn">Read</a> <a href="#" class="greenbtn">Mark</a></p></div>
            </div>
        </div>    
<?  require 'inc/footer.php'  ?>

7 个答案:

答案 0 :(得分:6)

您需要发出HTTP标头来重定向客户端:

if ($redirect == true) {
  //redirect
  header("Location: http://www.mysite.com/noauth.php"); 

  //And exit
  exit;
}

PHP Manual on Headers。使用标题时需要注意:它们必须在任何其他输出之前发送到客户端。这包括您在php脚本顶部可能存在的任何流氓空白区域,如果您尝试发布新标题,则会产生错误。

答案 1 :(得分:1)

这应该做:

<?php
header('Location: page.php');
?>

请参阅header功能。对于更复杂的重定向网址,您可能需要查看http_redirect函数。

您需要确保在输出任何常规内容之前输出标题,否则它将无效。如有必要,您可以查看headers_sent

输出HTTP标头后的内容,但在大多数情况下都不会向用户显示。通常,在exit;语句后立即执行header是有意义的。

答案 2 :(得分:1)

如果您尚未打印任何标题,可以使用标题重定向,如下所示:

<?php

    header("Location: B.php");

?>

答案 3 :(得分:1)

使用 标题('Location:filename.php'); 然后你将被重定向到filename.php。

答案 4 :(得分:0)

标题(“location:b.php”;)是要走的路,在Thorarin的评论中,在header命令之后应该没有更多输出,除了骰子;或者退出();不对作用于标题的搜索引擎蜘蛛可以看到不应该被采取行动的内容(“位置”);命令,他们可能会跟随您不想跟随的页面上的链接。

也没有提到,但如果重定向到只能由已登录的人访问的页面,则应该设置会话或使用其他方法,以便确保进入b的人。 php实际上是经过验证/登录的用户。

Bill H

答案 5 :(得分:0)

header()技术上需要一个完整的网址(即http://example.com),但这不是问题所在。

必须在页面上打印任何其他内容之前发送

标题(即使是空格) - 请看第5行:这是一次回车,这会导致header() - 调用失败

答案 6 :(得分:0)

&LT; ? php
   require'inc / header.php';
   require'inc / config.php';
   require'inc / functions.php';
? &GT;
&lt; - 这个换行符怎么样?
&LT; ?