0

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

我想要以下内容:

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

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

有人可以告诉我如何正确地做到这一点,所以它不会返回任何“标头已发送”错误吗?

4

6 回答 6

4

使用输出缓冲

<?php

ob_start();
echo "Hello\n";

setcookie("cookiename", "cookiedata");

ob_end_flush();

?>
于 2013-01-26T16:24:01.103 回答
2

如果访问者通过您网站的链接访问此页面,您可以发送其他数据以让您的服务器脚本知道 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标头。

<?php

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

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

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

旧答案 2

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

<html>
 <head>
  <script>
  //script here
  location = <?php echo json_encode('http://www.example.org'); ?>;
  </script>
 </head>
 <body>
 </body>
</html>
于 2013-01-26T16:24:56.417 回答
2


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


<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/

于 2013-01-26T16:27:33.233 回答
0

Redirect user to other website after executing some JavaScript

<script type='text/javascript'>
    alert('executing some javascript');

    // redirecting to other website
    window.location.href = "http://example.com";
</script>

You don't need (and cannot use) PHP to achieve what you require

于 2013-01-26T16:30:29.230 回答
0

您必须在 html 开始之前使用 php 标头

<?php header ('Location: example.com') ?>
<html>
 <head>
  //script here
 </head>
 <body>
 </body>
</html>

注意:如果您使用<?php header('Location:example.com'); ?>以下行,则意义较小,因为它将被重定向到最开始行的另一个页面。

于 2013-01-28T06:14:23.313 回答
0

这对于标头是不可能的Location。如果您的响应包括一个,浏览器将被重定向并且不会执行任何 Javascript。

如果您想在客户端执行某些操作,请在获取重定向的 URL 之前执行此操作,或者在到达最终目标 URL 后执行此操作。

于 2013-01-26T16:25:22.887 回答