【问题标题】:PHP does the code break after a redirect?PHP 重定向后代码会中断吗?
【发布时间】:2012-08-14 22:49:29
【问题描述】:

我有一个非常基本的问题...在 php 函数中,如果值返回 FALSE,我将重定向,否则继续代码。

flibbertigibbet()
{
   $value = true_or_false();

   if ($value == FALSE)
   {
       //redirect to another controller method
   }

   //the rest of the code
}

重定向后会发生什么?如果说..重定向需要更长的时间来加载,代码是否会中断或执行一点点?

在重定向后使用exit() 是一种好习惯吗?

【问题讨论】:

  • this 回答。
  • 大部分人使用foobar,但flibbertigibbet也不错。
  • @arxanas foobar 上个赛季都很棒..

标签: php function redirect


【解决方案1】:

代码将继续执行 - 不仅在重定向需要更长的时间时,而且每次 nd 一直到最后。

您是否使用exit() 取决于您是否想要执行其余代码。你可以设置一个header() 并发送一个新地址,但你仍然可以在之后执行一些事情——比如更新数据库或其他一些位。

我通常认为最好完成所有需要的更新并在页面末尾发送header() - 使调试更容易和更直观。

【讨论】:

    【解决方案2】:

    仅设置重定向标头本身并没有任何作用。设置 Location 标头后始终使用exitdie(除非您确切知道自己在做什么)

    【讨论】:

      【解决方案3】:

      这真的取决于你所说的重定向是什么意思。是的,如果它是这样的,它将永远不会运行其余代码:
      header("Location: http://newurl.com");

      否则,除非有充分的理由不返回(无限循环,您尝试 include 内容耗时过长且未设置超时,否则您使用 exit()... ),则其余代码将在 if 条件代码运行完毕后立即运行。

      【讨论】:

      • 你确定它不会运行剩下的代码吗?那sounds wrong to me。是否可以验证声明?
      • 代码仍将执行。您可以通过发送两个header() 命令来非常轻松地对此进行测试。该页面将打开到第二个。
      猜你喜欢
      • 2011-04-09
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 2013-06-19
      相关资源
      最近更新 更多