2010-10-27 104 views
3

我不想讓人們直接訪問AJAX目錄中的頁面,但仍需要從其父頁面提供服務。我已經嘗試了許多.htaccess行,但它們也都從主頁面中阻止它。總結一下,我不希望人們能夠輸入http://www.mysite.com/AJAX/page1.html並查看它,但需要通過AJAX將page1.html帶入其父頁面。限制直接鏈接到某個目錄中的AJAX頁面

<LIMIT GET POST> 
Order deny, allow 
deny from all 
</LIMIT> 

阻止所有訪問

你能在父文件define('IS_IN_SCRIPT',1);中定義的標記,並在AJAX頁面檢查呢?將與AJAX頁面一起工作還是隻包含PHP?

+0

注意,沒有很簡單的方法之前運行代碼此代碼不能直接訪問。引用者標題可能被篡改。 – 2012-10-18 09:27:37

回答

3

Determining Referer in PHP

檢查$_SERVER['HTTP_REFERER']是您的域(或可接受域的列表),如果不是

然後重定向。

if (!empty($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], 'yourdomain.com') !== false) 
    { echo 'probably from your own site'; } 
1

你總是可以設置一些東西,如果某個特定的參數沒有通過GET或POST傳入,那麼ajax頁面會將你重定向到其他地方。

在PHP中,它會看起來像

if(!isset($_POST['some_var'])) 
    header('Location: somePage.html'); 
+0

我會如何在這裏做廣告? 。 $( 「#UL李yearMenu一」)生活( '點擊',功能(E){ \t \t \t e.preventDefault(); \t \t \t變量$父= $(本).parent() ; \t \t \t $ parent.addClass( 「選擇」)的兄弟姐妹()removeClass( 「選擇」);。。 \t \t \t變種HREF = $(本).attr( 'href' 屬性); \t \t \t \t \t $(「#tableContent」)。load(href); \t \t}); – 2010-10-27 02:19:31

+0

哦,我在想,最好是在php或其他服務器端語言中進行檢查。這是如果試圖從JavaScript讀取後/獲取參數。 – 2010-10-27 02:25:16

+0

那麼我的方案將標題添加到主頁面並在AJAX頁面上檢查它是否合適?我通過jquery調用頁面.load函數 – 2010-10-27 02:26:49

0

$$ zoe_daemon

你需要 「鏈接」 文件通過AJAX打開從父頁面的私人文件。

/*this is simple "linker" file to open private file in folder named "private" from parent page via AJAX.*/ 
//begin linker.php 
<?php 
    $link = $_GET["link"]; 
    include "../private/$link.php"; 
?> 
//end linker.php 

,然後在「私人」文件夾中的文件需要檢查,如果請求的URI不包含字符串「私」;這對於想要直接私人文件的用戶是無效的。 爲axample「的login.php」文件夾命名爲「私人」可以,如果你把你想要把

//begin login.php 
$count = 0; 
$test = str_replace("name_of_directory_cannot_directly","dummy_string",$_SERVER['REQUEST_URI'], $count); //or 
if ($count > 0) { 
    die "Ooouuuppppsss, you cannot access this file directly"); 
} 
/* 
//your code here.... 
*/ 
//end login.php