0

我正在使用 php 标头从几个页面重定向到 dev.php

<?php header(Location: dev.php); ?>

我想知道我从哪里被重定向到这里。

我努力了

<?php
print "You entered using a link on ".$_SERVER["HTTP_REFERER"];
?>

但它$_SERVER["HTTP_REFERER"];仅在您使用 dev.php 访问时才有效<a href="dev.php">Go to Developer Page</a>

那么如何获取引用 URL?

4

5 回答 5

2

试试下面的东西。

<?php header(Location: dev.php?referrer=$_SERVER[PHP_SELF]); ?>

或者

header('Referer: '.$_SERVER['PHP_SELF']);
header(Location: dev.php);

如果上述方法不起作用,您将不得不参加会议。

于 2013-07-22T09:03:16.680 回答
1

您可以在 GET 中传递变量:

<?php header('Location: dev.php?backurl='.$_SERVER[PHP_SELF]); ?>

然后这样取:

$backurl=$_GET['backurl'];
于 2013-07-22T09:04:23.653 回答
0

您需要referer手动添加到标题:

header("Referer: http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); // current page
header("Location: dev.php");

您也可以使用 CURL 来完成。在这里查看一个示例函数: PHP - Referer redirect script

于 2013-07-22T09:04:45.863 回答
0
$_SERVER["HTTP_REFERER"] = 'YOUR_URL';
header('Location: dev.php');
exit(0);
于 2013-07-22T09:05:04.957 回答
0

引用标头相当不可靠,有防病毒软件和防火墙可以完全过滤它。您唯一可以非常安全地依赖的是 cookie 以及与它们一起使用的会话。

Cookie 存储在客户端、浏览器中,因此可以进行操作,但如果您存储的是非关键信息,它们就足够了。

现在的会话依赖于 cookie 作为启动它们的一种方式。随机生成的哈希存储在 cookie 中,相应的数据存储在链接到该哈希的服务器上。当客户端请求下一页时,将检索此数据。有关会话的更多信息,请阅读PHP 手册的相应部分

正如我所写的,现在会话依赖于 cookie,除非您意识到安全隐患,否则您不应该这样做。但是,您可以使用 URL 参数来传递会话 ID。

附带说明:为了使用 cookie(以及与它们一起使用的会话),设置和最终 URL 必须位于同一域中。如果不是这种情况,您可以使用请求参数来传递信息。

于 2013-07-22T09:36:28.993 回答