2013-12-13 58 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查看网站,而不是它所嵌入的网站。无法找出您的横幅托管的位置。用户代理(浏览器)只会从服务器请求横幅广告。

你应该问问在他们的网站中嵌入横幅的人添加某种密钥。没有钥匙,你什么都不用,用钥匙,你知道你的客户是谁。