【发布时间】:2009-01-22 22:02:56
【问题描述】:
我将如何在 PHP 中做到这一点?
Server.Transfer("/index.aspx")
(为 C# 添加“;”)
编辑:
保持 URL 与以前相同很重要;你知道,对于谷歌。在我的情况下,我们有一堆 .html 文件要传输,对于客户端来说,地址栏不会改变很重要。
【问题讨论】:
我将如何在 PHP 中做到这一点?
Server.Transfer("/index.aspx")
(为 C# 添加“;”)
编辑:
保持 URL 与以前相同很重要;你知道,对于谷歌。在我的情况下,我们有一堆 .html 文件要传输,对于客户端来说,地址栏不会改变很重要。
【问题讨论】:
据我所知,PHP 没有真正的传输能力,但您可以像这样使用 include() 或 require() 获得完全相同的效果:
require_once('/index.aspx");
【讨论】:
最简单的方法是使用header 重定向。
header('Location: /index.php');
编辑: 或者,如果您不想使用 HTTP 标头,则可以只包含该文件并退出。
【讨论】:
使用 require 与 server.transfer 类似,但在某些情况下它的行为会略有不同。例如,当输出已经发送到浏览器并使用 require 时,将显示已经发送到浏览器的输出以及您需要的路径。
模仿 C#/ASP.NET Server.Transfer() 的最佳方法是正确设置 PHP 输出缓冲,然后使用我编写的以下函数。
function serverTransfer($path) {
if (ob_get_length() > 0) {
ob_end_clean();
}
require_once($path);
exit;
}
设置输出缓冲就像使用 ob_start() 作为 PHP 应用程序调用的第一行一样简单。更多信息可以在这里找到:http://php.net/manual/en/function.ob-start.php
ASP.NET 默认启用输出缓冲,这就是为什么在使用 Server.Transfer() 时不必这样做;
【讨论】: