簡體   English   中英

如何知道在PHP中加載腳本的頁面的URL?

[英]How can I know the URL of the page that is loading a script in PHP?

有一個來自不同域的網頁,其中包含在我的服務器中托管和生成的腳本。 假設該頁面位於http://www.theirdomain.com/site ,其標記如下:

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

script.php頁面確實創建了JavaScript內容,但我想知道哪個是調用script.php的URL(即http://www.theirdomain.com/site )。

如何在PHP中獲取該信息?

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

在script.php中記錄referrer以查看它來自何處。 喜歡:

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.

當你想知道調用你的文件'script.php'的頁面的url時,你應該看看$ _SERVER變量。

在該變量中,您將找到調用腳本的一些有用標題,例如,嘗試測試從$ _SERVER ['REQUEST_URL']和$ _SERVER ['HTTP_REFERER']獲得的值。 可在此處找到更多選項: http//php.net/manual/en/reserved.variables.server.php

例如,您可以將來自這些變量的數據與時間一起存儲到數據庫中,以便以后能夠輸出使用統計信息。

您可以通過$ _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'], '/');
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM