如何从客户端的xml请求获取服务器上的信息

时间:2011-12-11 18:14:01

标签: php xml simplexml

我是否可以从我的网络服务器上获取有关哪个网站请求读取XML文件的信息,并从请求中将此信息插入数据库?

例如,我想开发一些脚本,当客户端在他的服务器上安装我的脚本时,每次当他访问他的网站时,如果有新版本的脚本以及如何更新脚本,他会调用simplexml_load_file来获取信息。我想知道谁有我的剧本。


“blind”我尝试使用.htaccess但是它没有任何效果:(当我调用text.php:

<?php
$myFile = "save.txt";
$fh = fopen($myFile, 'a') or die("can't open file");
$stringData = $_SERVER['REMOTE_ADDR']." : ".$_SERVER['REQUEST_TIME']."\n";

fwrite($fh, $stringData);
fclose($fh);

 $xml = file_get_contents('test.xml');
    header("Content-Type:text/xml");  
    echo $xml;
?>

他把我的save.txt文件信息从哪个IP地址调用。我可以知道来电是从哪个网址来的吗? 以及如何修复调用XML文件而不是php文件?

1 个答案:

答案 0 :(得分:2)

也许您想尝试使用超级全局$ _SERVER ['HTTP_REFERER']。尝试回应它以查看它包含的内容,您将了解它的工作原理。在论坛或其他域上放置此脚本的链接,然后单击以查看结果。

要确切知道谁拥有您的脚本,您可以让他们注册(以获取他们的名字),或者将域保存在数据库中以便稍后查看为日志(并且可以手动填写有关该特定域的详细信息) )等等。

编辑:

我看到你有一个XML文件。那么你应该使用htaccess并使用不同的脚本处理该请求,并在该脚本中使用$ _SERVER ['HTTP_REFERER']。

OR:使它成为将要求的php文件。并做所有的事情来保存你需要的信息,如referer域,并在文件的末尾读取你想要的东西(fread,file_get_contents,文件等)真正的xml文件并输出它...如果你有问题,尝试首先使用header():http://www.php.net/manual/en/function.header.php设置标题,使其看起来(和感觉)像一个真正的xml文件。我认为正确的标题是text / xml,或者更好:application / rss + xml。

<?php
    file_put_contents('save.txt', $_SERVER['HTTP_REFERER'].PHP_EOL);
    $xml = file_get_contents('test.xml');
    header('application/rss+xml');
    echo $xml;
?>

将文件另存为test.php

然后创建另一个文件someonewhousethescript.html,将它放在同一个文件夹中,在其中添加一个指向test.php的链接(在你使用.htaccess后,你应该直接链接到test.xml)。

然后转到mrakodol.info/someonewhousethescript.html并点击链接

并查看save.txt。那里你很可能会看到mrakodol.info/someonewhousethescript.html这就是我认为你想要的。

如果你真的想要将扩展名保留为.xml,你可以随时使用apache mod-rewrite。如果有必要,我会提供样品。

至于扩展名,然后在该文件夹中创建一个新文件(看起来像网站的根文件夹),并将其命名为.htaccess,并在其中写下以下行:

RewriteEngine on
RewriteCond %{REQUEST_METHOD} ^GET$ [NC]
RewriteRule test.xml test.php [NC]