有条件地为远程站点提供徽标

时间:2011-02-11 21:44:52

标签: php javascript mysql

我正在尝试为特定人群创建一个代码段,这些人已经有权在我们的网站上加盖印章。这个想法起初看起来很简单,直到我试图通过不同的网站进行测试。

基本上我希望用户有一个代码片段,如:

//include jquery for post
<script type="text/javascript" language="javascript" src="http://www.mysite.com/jquery.js"></script>

<script language="javascript">
    $.post("http://www.mysite.com/test.php", {requesting_id:"12345", requesting_address:window.location.host}, function(data){
    document.write(data);
  });
</script>

test.php针对sql db检查传递的变量。如果他们传递的ID与要求提供该文件的网址匹配,并且我们同意继续将其徽标提供给他们的页面(真/假),则会返回该图像。

只要所有文件都存在于我的服务器上,这都很有用。似乎问题与php文件似乎不在我的服务器上运行但在请求服务器上运行因此查询不运行这一事实有关。

有一种简单的方法吗?我花了几个小时寻找一种方法,但我没有想法。

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

我不会使用javascript,并且绝对不要求所有这些网站都包含jquery。

如果您使用的是php,最简单的方法就是从php文件中提供图像。图像看起来像:

<img src="http://yoursite.com/image.php?request_id=XXXX">

然后你创建一个基于request_id提供图像的php脚本。

您必须在php中读取服务器中的图像并使用header("Content-type: image/jpeg")(如果是jpeg ...)提供服务。

如果你在变量中有一个图像,那么输出(对于一个jpeg ......)就像这样:

header("Content-type: image/jpeg");
imagejpeg ($image);

答案 1 :(得分:1)

您将拥有一个脚本,用于测试HTTP_REFERRER属性的jpg。

然后客户端只需加载:

<img src="http://yourweb-site.com/logo.php?id=clientid"/> 

http://www.electrictoolbox.com/php-http-referer-variable/

答案 2 :(得分:0)

因为它是用jQuery的docs

编写的
  

由于浏览器安全限制,大多数“Ajax”请求都遵循相同的原始策略;请求无法成功从其他域,子域或协议中检索数据。

您可以使用“http://img.example.com/logo?reques_id = 12345 ...”之类的网址,只需将图片作为输出或创建iframe ......

答案 3 :(得分:0)

允许脚本对位于不同域上的对象进行操作存在一些严重的安全问题。为什么不允许用户在其页面上放置静态URL而不是尝试在客户端解析它们,而是在服务器端评估用户是否有权使用?如果是,请提供文件。如果没有,请提供透明的.gif文件,以使其网站看起来不会破损。无论哪种方式,您都可以完全避免使用跨站点脚本编写任何问题。