【问题标题】:redirect after post?发布后重定向?
【发布时间】:2009-10-23 15:34:08
【问题描述】:

我有一个用于提交简历的 php 页面。一旦他们点击提交,他们会将所有帖子信息发送到 mail.php

发送邮件后,我希望用户返回网站上的不同页面(工作机会所在的位置)

在 mail.php 完成其业务后,我可以使用任何命令重定向到不同的页面吗??

谢谢

【问题讨论】:

    标签: php redirect


    【解决方案1】:

    这是 PHP 中的标准重定向:

    <?php
    header( 'HTTP/1.1 301 Moved Permanently' );
    header( 'Location: http://www.example.com' );
    exit;
    ?>
    

    但是,在您的情况下,301 重定向行可能不是必需的。需要注意的是exit是必须的,否则你的PHP脚本的其余部分将被执行,这可能是你不想要的(例如,如果出现错误,你可能想显示一些东西)。

    此外,必须在任何输出发送到浏览器之前调用header 函数(包括空行)。如果您无法避免一些空行,请将ob_start(); 放在脚本的开头。

    【讨论】:

    • 根据具体情况,状态码应该是“302 See Other”或“200 OK”。 301状态意味着被访问的页面现在在一个新的位置,事实并非如此。有关使用正确状态代码的更多信息,请参阅参考资料:w3.org/Protocols/rfc2616/rfc2616-sec10.html
    • 在这种情况下,它实际上应该是 303,因为数据已发布。 header("位置:example.com",true,303);
    【解决方案2】:
    header("Location: /yourpage.php");
    

    PHP Documentation

    【讨论】:

      【解决方案3】:

      使用header()函数:

      header('Location: http://example.com/new_loc/');
      

      header('Location: /new_loc/'); // if it's within the same domain.
      

      【讨论】:

        【解决方案4】:

        在mail.php的最后添加

        header("Location: anotherpage.php");
        

        请记住,在 header() 调用以使重定向正常工作之前,您不能输出任何内容。

        【讨论】:

          【解决方案5】:

          在相关说明中,关于 PHP 标头命令的一件重要事情是,您必须确保在运行该命令的页面上显示任何内容之前运行此命令,否则它将无法工作。

          例如,这将不起作用:

          <html>
          <head>
          </head>
          <body>
              Hello world
          </body>
          <?php header("Location: mypage.php"); ?>
          </html>
          

          但这会起作用:

          <?php header("Location: mypage.php"); ?>
          <html>
          <head>
          </head>
          <body>
              Hello world
          </body>
          </html>
          

          基本上,header 命令只有在任何 static 内容甚至 HTML 标记从脚本中吐出之前在 PHP 脚本中使用时才会起作用。

          【讨论】:

          • 并且,如果你不想在重定向后显示html或者执行代码,一定要加上exit();或者死();在页面的其余部分之前。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-01-04
          • 2012-08-19
          • 1970-01-01
          • 1970-01-01
          • 2018-02-02
          • 2013-10-11
          相关资源
          最近更新 更多