2009-12-18 42 views
2

好的,這是我的情況。PHP,HTTP_REFERER無法在iframe上工作?

我有一個頁面,index.php文件,這是mainsite(Flash網站)

我呼籲其他頁面iframe.php包含的index.php

另一個頁面的iframe中,test.php的。裏面有2個環節,第一個環節是直接的index.php,另一個環節是iframe.php

我測試:

  • 我點擊鏈接1,當我跟蹤/回聲HTTP_REFERER,它顯示「test.php」,但

  • 我點擊第二個鏈接,當我跟蹤/回顯HTTP_REFERER時,它顯示「iframe.php」。

爲什麼顯示「iframe.php」? HTTP_REFERER不能在iframe上工作?

反正有沒有得到「test.php」,當我點擊第二個鏈接?

的源代碼爲:爲的index.php test.php的

<html> 
<head> // Some headers information 
<script type="text/javascript" src="js/swfobject.js"></script> 
<script type="text/javascript"> 
var flashvars = {}; 
    <?php 
if(!empty($_SERVER['HTTP_REFERER'])){ 
?> 
    flashvars.link  = '<?php echo $_SERVER['HTTP_REFERER']; ?>'; 
<?php 
} 
?> 
var params = {}; 
var attributes = {}; 
swfobject.embedSWF("main.swf, "content", "100%", "100%", "9", "expressInstall.swf", flashvars, params, attributes); 
</script> 
</head> 
<body> 
    <div id="content"> 
    <a href="http://www.adobe.com/go/getflashplayer"> 
      <img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /> 
     </a> 
    </div> 
</body> 
</html> 

源代碼iframe.php

<html> headers tag 
... 
<body> 
<center><iframe src="index.php" mce_src="index.php" frameborder="0" height="500" scrolling="no" width="500"></iframe></center> 
</body> 
</html> 

的源代碼:

.... 
<a href="iframe.php" target="_blank">This is Iframe</a> <br><br> 
.... 
<a href="index.php" target="_blank">This is normal link</a> <br><br> 
+0

請發佈'index.php','test.php'和'iframe.php'的源代碼,以便我們可以嘗試重現您的問題。 – Asaph 2009-12-18 04:10:58

+0

roger那。給我5分鐘 – mysqllearner 2009-12-18 04:11:35

回答

1

在這兩種情況下,你」重新看到index.php的輸出。這裏的原因:

情景1)

當您從鏈接打index.phptest.php,它加載index.php(與test.phpHTTP_REFERER)。

方案2)

當您從鏈接打iframe.phptest.php,它加載iframe.php在標籤(與iframe.phpHTTP_REFERER)在內部加載index.php

+0

更新我的問題與源代碼。請看看,看看有什麼不對嗎? – mysqllearner 2009-12-18 04:21:58

+0

更新了我的回答 – Asaph 2009-12-18 04:28:01

+0

不,結果不一樣。當我點擊普通鏈接時,它顯示test.php(這是正確的),但是當我點擊iframe鏈接時,它會顯示iframe.php。這就是爲什麼我在這裏問這個問題。你和我有不同的結果?我可以知道你使用的是什麼操作系統和瀏覽器嗎? – mysqllearner 2009-12-18 04:33:29

0

不幸的是,沒有。在iframe中顯示的頁面的HTTP_REFERER值始終是包含iframe的父頁面。

無論如何HTTP_REFERER往往有點棘手。如果你可以避免在它周圍建立任何重要的邏輯,這是一個好主意。

我收集你使用的PHP - 也許你可以使用會話來存儲test.php加載時訪問的最後一頁?在test.php上,你設置了$_SESSION['referringPage'] = 'test.php';。然後在index.php上,讀取$_SESSION['referringPage']的值,無論頁面是否加載到iframe中,您都會得到相同的信息。

+0

通常我使用會話。但是這一次,我不能這樣做。我會給我的客戶端只有鏈接,例如:This is Iframe,我不能在這裏做很多。或者你有更好的解決方案?我的情況:給1個鏈接到客戶端來檢測以前的URL。 – mysqllearner 2009-12-18 04:27:22

+0

@Paul:當您打開多個瀏覽器窗口/標籤頁時,您推薦的'$ _SESSION'方法很容易出錯。不同的請求可以覆蓋彼此的會話值。 – Asaph 2009-12-18 04:52:20

+0

啊..我沒注意到。但到目前爲止,我還沒有收到任何合作伙伴。要儘快改變方法。那麼,Asaph,最好的方法是什麼?我的意思是得到以前的URL? – mysqllearner 2009-12-18 05:01:09