首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在PHP header()之前发送header?

如何在PHP header()之前发送header?
EN

Stack Overflow用户
提问于 2013-01-27 00:22:57
回答 6查看 223关注 0票数 0

在我将用户重定向到另一个网站之前,我想在正常的头标记内执行一个javascript代码,但我无法弄清楚如何实际使其工作,因此代码将被执行,访问者将被重定向。

我想要以下内容:

代码语言:javascript
复制
<html>
 <head>
  //script here
 </head>
 <body>
 </body>
</html>

<?php header ('Location: example.com') ?>

有没有人可以告诉我怎么做正确,这样它就不会返回任何‘头已经发送’的错误?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-01-27 00:24:56

如果访问者从您的站点通过以下链接访问此页面,您可以发送额外的数据,让您的服务器脚本知道JavaScript已启用;

代码语言:javascript
复制
$('a').each(function() {
    var url = this.href;

    if (url.indexOf("?") !== -1)
        this.href = url + '&js=1';
    else
        this.href = url + '?js=1';
});

这将更改所有链接,使其包含一个指示是否启用JavaScript的特殊参数。如果您希望运行的其他JavaScript代码也可以放在这里,那就更好了!

服务器脚本将使用类似if (!empty($_GET['js'])) { ... }的东西来编写一段JavaScript (旧答案2)或立即执行重定向。

旧答案

您可以在禁用JavaScript的情况下发送Refresh标头。

代码语言:javascript
复制
<?php

    header('Refresh: 2; url=http://www.example.org');

?>
<html>
 <head>
  //script here
 </head>
 <body>
 </body>
</html>

我必须承认我没有尝试过,但它很有可能会起作用

旧答案2

但是,如果您确定启用了PHP,那么您可以在完成后让JavaScript执行重定向;如果url总是相同的,您可以省略JavaScript代码,只使用静态字符串:

代码语言:javascript
复制
<html>
 <head>
  <script>
  //script here
  location = <?php echo json_encode('http://www.example.org'); ?>;
  </script>
 </head>
 <body>
 </body>
</html>
票数 2
EN

Stack Overflow用户

发布于 2013-01-27 00:24:01

使用output buffering

代码语言:javascript
复制
<?php

ob_start();
echo "Hello\n";

setcookie("cookiename", "cookiedata");

ob_end_flush();

?>
票数 4
EN

Stack Overflow用户

发布于 2013-01-27 00:27:33

content="<seconds>;url=http://www.the-url.com"

代码语言:javascript
复制
<head>
    <meta http-equiv="REFRESH" content="10;url=http://www.the-domain-you-want-to-redirect-to.com">
</head>
<body>
    <script>
        alert("run before redirect");
    </script>
</body>

http://jsfiddle.net/W9dhW/

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14538873

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档