2013-06-27 64 views
0

我想知道,如果呼应以下将是一个很好的选择,使用标题(“位置:index.html的”),而不必使用output_bufferingPHP:标题替代?

echo "<script type='text/javascript>window.location = 'index.html';</script>"; 

有次我想在可能重定向一个正文,上述工作是否正常或值得打开output_buffering选项,只是用户头()?

+0

只要用户不禁用JS,它就会工作。 –

+0

您也可以使用''如果否-JS将成为问题。 – Timothy

+0

output_buffering是一个'黑客',因为你的代码结构不好。 – 2013-06-27 00:36:05

回答

1

header()定义用户正在查看的页面。使用输出缓冲力忽略先前的输出缓冲区,所以它不被认为是重定向的有效方式。所以,这里是我的建议

  1. 如果您唯一的目标是重新,然后确保你没有一点输出header语句执行之前。在这种情况下,header是适当的。

  2. 如果您需要显示您的页面并根据用户交互性需要重定向到其他页面,请使用JavaScript重定向。

0

请记住,使用标题无法输出到屏幕,否则标题将无法使用,JavaScript版本在JavaScript关闭时不起作用。我个人认为头是更安全的选择,但我认为这可能归结于个人意见!

2

只需使用header(),这是正确的方法。

但是你不需要使用输出缓冲。构建“body”字符串并将其放入一个变量(不要回显内容)。然后使用标题,如果你必须。并在脚本的最后一行回显身体变量(如果你没有重定向头)

+0

或者使用适当的框架来处理'Request'和'Response'对象。你不应该担心你自己调用'header'。 – Halcyon

+0

我甚至没有想到把身体放入一个字符串。读完每个人的评论后,我将使用标题而不是js。我应该避免在页面加载后重定向。感谢大家的意见。 – Ralph

0

如果出于某种原因想要避免输出缓冲,那么您的想法将起作用。