2013-12-13 85 views
0

我想日誌誰在使用他們的網站上我的旗幟網站..所以我一開始是這樣的:登錄網站使用橫幅

$db = new mysqli('xxx', 'xxx', 'xxx', 'xxx'); 

if ($db->connect_errno) { 
    printf("Connect failed: %s\n", $db->connect_error); 
    exit(); 
} 

if ($result = $db->query("SELECT * FROM websites WHERE url = '" . $_SERVER['REMOTE_HOST'] . "'")) { 
    if($result->num_rows !== 0) { 
     echo "I already know this website contains my banner...!"; 
    } else { 
     $query = "INSERT INTO websites VALUES (NULL, '" . $_SERVER['REMOTE_HOST'] . "', NOW())"; 
     $db->query($query); 
     echo "Hey, this is a new website who placed my banner! Let's add them to my database..."; 
    } 
    $result->close(); 
} 

我會通過投放JPG更換echo的或PNG文件,所以它會實際顯示橫幅。但是,remote_address總是空的,是他們的任何其他方式來保存網站的網址到我的網站數據庫的橫幅已放置?我究竟做錯了什麼?

回答

3

你應該看看引用而不是REMOTE_HOST。 REMOTE_HOST將包含客戶端瀏覽器的主機名,而不是旗幟代碼所在的服務器。 HTTP_REFERER是你正在尋找的。

+0

否'REFERER'是點擊鏈接的來源。沒有辦法找出放置橫幅的網站。 –

+0

@BartFriederichs只是措辭..橫幅顯然託管在OPs服務器上,他想知道的是代碼*請求橫幅的地方(即img標籤所在的位置)。只有引用者將包含所述信息。 – smassey

+0

我改變了我的措辭。它仍然行不通。從PHP站點(我的重點):「頁面地址(如果有的話)**將用戶代理引用到當前頁面**這是由用戶代理設置的,並非所有的用戶代理都會設置它,有些提供了將HTTP_REFERER修改爲一項功能的能力,簡而言之,它不能真正被信任。「 –

1

刪除addrress可以是空的。也許你可以看看$_SERVER['REMOTE_HOST'],然後自己做一個查詢。另一種選擇是結合這些東西。

另外請記住,該數據可能被該行的另一端欺騙。

2

這不會像那樣工作。 $_SERVER['REMOTE_HOST']address of the client查看網站,而不是它所嵌入的網站。無法找出您的橫幅託管的位置。用戶代理(瀏覽器)只會從服務器請求橫幅廣告。

你應該問問在他們的網站中嵌入橫幅的人添加某種密鑰。沒有鑰匙,你什麼都不用,用鑰匙,你知道你的客戶是誰。