在发送标头时重定向非JavaScript用户

时间:2013-08-30 11:23:17

标签: php

我想重定向一个条件为true的用户,但我不能轻易写header('Location : something');,因为在我的情况下已经发送了标题(已显示HTML内容)。我知道如果用户启用了JavaScript,我可以编写类似的东西:

<script type="text/javascript">
document.location.href = "http://google.pl";
</script>

但我想重定向每个用户,包括那些没有启用gov JS的用户。我补充说,这种情况发生在文档的<body>部分。有没有办法做到这一点?我要求每个解决方案,它们必须不适用于PHP。

PS我读过that文章,但我认为它无法帮助我。

4 个答案:

答案 0 :(得分:3)

使用 <noscript> 标记。

像这样的东西

<noscript>
    <meta http-equiv="refresh" content="0; url=http://example.com/somepage.html" />
</noscript>

答案 1 :(得分:1)

这是不可能的,我想是的。但是你可以为浏览器实现一条消息,告诉用户他/她应该激活javascript。

<noscript>
    You can browse this site without having JavaScript enabled,
    but to experience the full benefits of the site, please enable JavaScript.
</noscript>

但是你可以继续使用 php 解决方案。

添加

ob_start()

在php页面的开头,然后使用

header('Location : something');

我希望能帮助你。

答案 2 :(得分:0)

而不是重定向非Javascript用户重定向Javascript用户

如果用户禁用了javascript,则首先向用户提供应重定向的页面。

如果用户启用了javascript,那么你编写javascript来将用户重定向到页面,所以如果用户启用了javascript,那么他将被重定向到正确的页面但是如果他禁用了javascript则脚本不起作用,他留在实际应该重定向的页面...希望这有用......

答案 3 :(得分:0)

我使用ob_end_clean();函数通过cleaning output buffer解决了它,然后使用PHP header();。当然,在文档开头我写了ob_start();并在最后ob_end_flush();。您可以阅读有关输出缓冲here的更多信息。