【问题标题】:PHP MVC + Router and Redirect issuePHP MVC + 路由器和重定向问题
【发布时间】:2010-09-13 13:12:58
【问题描述】:

我有一个奇怪的问题,我一生都无法弄清楚。首先,我从头开发了一个 PHP MVC 框架。我遇到的问题是在 exit() 调用之后我得到了一个标头重定向执行。

这是路由过程的高级视图:

  1. REQUEST_URI 被剥离,请求的控制器、方法和任何参数都设置为稍后在脚本中使用的变量。
  2. router.php 检查以确保请求的控制器是否确实存在,如果不存在则返回 false,但如果所有内容都检查,则返回 true
  3. 如果返回 true,则执行请求的控制器、方法和任何参数。
  4. 如果它返回 false,那么路由器将发送重定向到自定义 404 页面。这使用了 PHP 的 header() 函数,并且在 header("Location: *"); 之后有一个 exit();

第 4 步是出现问题的地方。请求的控制器存在,因此它被执行,请求的视图存在,因此它正确加载所有内容,但随后它执行重定向,即使在成功加载视图后调用了 exit()。

路由器有什么原因会继续启动并触发重定向吗?

【问题讨论】:

标签: php model-view-controller redirect router


【解决方案1】:

我不会猜测(根据@Tomasz :),但即使您exit() 浏览器也会尊重它获得的任何 http 标头,包括位置。

事实上,在我做类似的事情时,我会发送一个重定向标头,然后执行exit 以确保在控制器中执行不会在 重定向之后继续。 p>

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-25
  • 2017-01-28
  • 2019-08-23
相关资源
最近更新 更多