ограничить прямые ссылки на страницы AJAX в определенном каталоге - PullRequest
4 голосов
/ 27 октября 2010

Я не хочу позволять людям переходить непосредственно на страницы в каталоге AJAX, но их все равно нужно обслуживать со своей родительской страницы. Я пробовал многочисленные строки .htaccess, но все они также блокируют его с главной страницы. Подводя итог, я не хочу, чтобы люди могли набирать http://www.mysite.com/AJAX/page1.html и просматривать его, но page1.html должен быть перенесен на родительскую страницу через AJAX.

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

блокирует весь доступ

Можете ли вы определить флаг в родительском файле define('IS_IN_SCRIPT',1); и проверить его на страницах AJAX? это будет работать со страницами AJAX или только с PHP?

Ответы [ 3 ]

3 голосов
/ 04 января 2011

Определение реферера в PHP

Проверьте, есть ли в вашем домене $_SERVER['HTTP_REFERER'] (или список допустимых доменов)

Затем перенаправьте, если нет.

if (!empty($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], 'yourdomain.com') !== false) 
  { echo 'probably from your own site'; }
1 голос
/ 27 октября 2010

Вы всегда можете настроить что-то так, чтобы, если определенный аргумент не передавался через GET или POST, страница ajax просто перенаправляла вас куда-то еще.*

if(!isset($_POST['some_var']))
  header('Location: somePage.html');
0 голосов
/ 13 июня 2011

$$ 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 запроса не содержит строку "private";это недопустимо для пользователя, который хочет напрямую закрытый файл.Например, «login.php» внутри папки с именем «private» не может быть доступен напрямую, если вы поместите этот код перед рабочим кодом, который вы хотите поместить

//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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...