将请求发送到具有针对我的原始页面的回调的另一个站点

时间:2010-09-23 17:13:18

标签: php flickr

在我的test.php文件中,我向我使用的Flickr应用程序发送了一个请求

header("Location: " . $request);

其中$ request是我尝试在Flickr上访问的网址。

对于我的Flickr应用,我必须设置一个回调网址。当Flickr完成处理我的请求后,它将调用回调URL。

我希望回调网址是我的原始网页test.php。当我尝试这个时,我陷入无限循环,因为test.php正在将请求重新发送回Flickr,而Flickr再次调用我的test.php(无限重复,直到浏览器退出)。

有没有办法在test.php中放置某种条件来检查请求是否来自Flickr,或者至少某种方式让脚本知道请求已经发送,所以不要再发送它

我已经尝试过,我将回调网址更改为我的另一个页面,并且工作正常。我只是看看我是否可以重复使用同一页面。

3 个答案:

答案 0 :(得分:1)

尝试使用referer

检查$_server['HTTP_REFERER']

[被修改]

我只是想说,你应该尝试添加if condition

// just and example, use some regular expression to check the refere
if($_SERVER['HTTP_REFERER'] != http://flicker.com){ 
header("Location: " . $request);
}else{
 // another code
}

由于

答案 1 :(得分:1)

它的丑陋。

两个发布的解决方案无效,因为:

  • referer在重定向时未被更改(如果它是一个http元重定向,它会被清除,但如果它是一个标题重定向则不会被清除。但它不会变得如此简单)。

  • 如果之后还有其他正常执行的内容,那么在发送标题后退出通常是一个好主意,但它与问题无关。

简单地说,如果它应该是 SAME 页面,您需要存储在文件或数据库中,或者每个ip地址/用户的重定向计数和中断或其他内容,但 NONE 这真的很可靠。您可以通过拥有一个无法反向生成的安全令牌来使其更安全,但所有这些都没有意义。你也可以使用cookies。这也是不可靠的。

关于您的问题,flickr不会重定向回到相同的年龄。 关于他们的规格,他们附加?frob = [frob]。 http://www.flickr.com/services/api/auth.spec.html

检查:

    <?php 
if(!isset($_GET["frob"])) {
header("Location: " . $request);
exit();
}
?>

答案 2 :(得分:0)

作为检查$ _GET [“frob”](非)存在的替代方法,您无法将Flickr中的回调网址设置为www.mysite.com/test.php?from_flickr=1然后执行

if (!$_GET['from_flickr']) {
    header('Location: '.$request);
    exit; 
}