2011-10-04 44 views
0

我使用jQuery負荷,從外部文件中像這樣加載一些數據:PHP和jQuery的.load() - 如果你訪問的.load()URL,重定向回

$(「# DIV1 「)負載(」 test.php的「);

現在,這工作正常,但我希望用戶不能訪問test.php。在情況下,他們在URL test.php的類型,重定向到index.php

我嘗試這樣做:

我在指數插入:<? $fromIndex = true; ?>,這在我的test.php的文件:

<? 
$fromIndex = true; 
if(!isset($fromIndex) || !$fromIndex) { 
    header("Location: index.php"); 
    exit(); 
} 
?> 

如果您訪問test.php,重定向的工作效果很好,但是從index.php中加載不起作用。

編輯:注:我不介意將test.php更改爲.xml?或者其他任何有助於解決的問題我正在加載的內容很少<option>

有人可以幫我嗎?

非常感謝

回答

0

有不是一個真正的方式爲您防止用戶訪問直接的URL,並且仍允許AJAX訪問同一網址。然而,勸阻他們的一個簡單方法是:A)以JSON對象的形式發回響應(當直接訪問它時,它使得它非常無用),或者B)將GET參數附加到URL並在出現這種情況時執行重定向參數不存在。

$("#div1").load("test.php?ajax=1"); 

<? 
if(!isset($_GET['ajax']) || $_GET['ajax']!=1) { 
    header("Location: index.php"); 
    exit(); 
} 
?> 
+0

你的代碼第2行似乎有錯誤? – jQuerybeast

+0

@jQuerybeast:感謝您的領導 - 忘記了方形支架。現在應該是好的。 –

0

jQuery的AJAX功能,所有發送X-Requested-With頭與內容XMLHttpRequest。你可以用它來做你想做的事,但不要把它用作反濫用功能 - 它被平凡地擊敗。它應該僅用於幫助那些偶然發現URL的用戶,或者向他們展示有用的錯誤頁面而不是說JSON提要。