2010-09-23 44 views
0

在我的test.php的文件回調的另一個站點的請求,我發送到Flickr的應用程序的請求,我一直在使用發送到具有針對我原來的頁面

header("Location: " . $request); 

其中$請求的網址我正在努力達成Flickr。

對於我的Flickr應用程序,我必須設置一個回調URL。當Flickr完成處理我的請求時,它將調用回調URL。

我希望回調網址是我的原始網頁test.php。當我嘗試這個時,我陷入了一個無限循環,因爲test.php將請求重新發送給Flickr,並且Flickr再次調用我的test.php(重複無限次直到瀏覽器退出)。

有沒有辦法在test.php中添加某種條件來檢查請求是否來自Flickr,或者至少有一些方法讓腳本知道請求已經發送,所以不要發送它再次。

我已經試過了,我將回調網址更改爲我的另一個頁面,並且工作正常。我只是看到我是否可以重複使用同一頁面。

+0

不Flickr的追加一個GET變量按照此頁的第3節:http://www.flickr.com/services/api/auth.spec.html – Wrikken 2010-09-23 17:44:01

+0

確實如此,但當我嘗試指出Flickr身份驗證API回調我的原始test.php ,它一直說「無法加載源代碼:[URL]」,其中[URL]是我給它的回調URL,即使頁面在那裏。它只是在瀏覽器切斷它之前一直進入無限循環。如果我將回調URL設置爲單獨的頁面,則可以通過$ _GET ['frob']獲取GET變量。我試圖看看我是否可以在一個文件中完成所有這些。 – Stephen 2010-09-23 19:08:47

回答

1

其醜。

兩個發佈的解決方案是行不通的,因爲:

  • 引薦心不是對重定向變化(以及它被清除,如果它是一個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(); 
} 
?> 
+0

不應該是,如果(!isset($ _ GET [「frob」]),因爲你不想重新直接來自Flickr ...... – eclipse31 2010-09-23 20:48:57

+0

是的,當然!我只是想看看是否有人通知:) – 2010-09-23 21:08:42

1

嘗試用$_server['HTTP_REFERER']

[編輯]檢查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 
} 

感謝

+0

referer不會改變重定向。 – 2010-09-23 19:12:01

0

作爲替代檢查的$ _GET的(非)存在[「FROB」],不能設置在Flickr的回調網址是www.mysite.com/test.php?from_flickr=1然後做

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