2

サーバーでホストおよび生成されたスクリプトを含む別のドメインのWebページがあります。そのページが入っていて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 を介して取得できます。詳細については、お読みください。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 に答える