2

有一个来自不同域的网页,其中包含在我的服务器中托管和生成的脚本。假设该页面在http://www.theirdomain.com/site其中,其标记如下:

<html>
    <head>
        <script src="http://www.mydomain.com/script.php"></script>
    </head>
    <body>
        ...
    </body>
</html>

script.php页面确实创建了 JavaScript 内容,但我想知道哪个是调用的 URL script.php(即http://www.theirdomain.com/site)。

如何在 PHP 中获取该信息?

4

4 回答 4

6

$_SERVER['HTTP_REFERER']不是 100% 可靠的。

于 2012-10-23T11:20:37.937 回答
4

在您的 script.php 中记录引荐来源网址以查看它的来源。像:

if(!empty($_SERVER['HTTP_REFERER'])) {
    $log = fopen('script_access.log', 'a');
    fwrite($log, 'The script has been accessed from ' . $_SERVER['HTTP_REFERER'] . PHP_EOL);
    fclose($log);
}

// Rest of your script here.
于 2012-10-23T11:21:12.740 回答
3

当您想知道调用您的文件“script.php”的页面的 url 时,您应该查看 $_SERVER 变量。

在该变量中,您将找到一些有用的脚本调用标头,例如尝试测试从 $_SERVER['REQUEST_URL'] 和 $_SERVER['HTTP_REFERER'] 获得的值。更多选项可以在这里找到:http: //php.net/manual/en/reserved.variables.server.php

例如,您可以将来自这些变量的数据与时间一起存储到数据库中,以便以后能够输出使用统计信息。

于 2012-10-23T11:21:59.723 回答
1

您可以通过 $_SERVER 获取所有这些信息,$_SERVER 是一个包含标题、路径和脚本位置等信息的数组。欲了解更多信息,请阅读。http://php.net/manual/en/reserved.variables.server.php

<?php
function get_path_info()
{
    if( ! array_key_exists('PATH_INFO', $_SERVER) )
    {
        $pos = strpos($_SERVER['REQUEST_URI'], $_SERVER['QUERY_STRING']);

        $asd = substr($_SERVER['REQUEST_URI'], 0, $pos - 2);
        $asd = substr($asd, strlen($_SERVER['SCRIPT_NAME']) + 1);

        return $asd;    
    }
    else
    {
        return trim($_SERVER['PATH_INFO'], '/');
    }
}
于 2012-10-23T11:41:05.700 回答