PHP & jQuery .load () - если вы заходите на URL .load (), перенаправьте обратно - PullRequest
0 голосов
/ 04 октября 2011

Я использую загрузку jQuery, чтобы загрузить некоторые данные из внешнего файла, например так:

$ ( "# 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>

Может кто-нибудь помочь мне, пожалуйста?

Большое спасибо

Ответы [ 2 ]

0 голосов
/ 05 октября 2011

Все функции jQuery AJAX отправляют заголовок X-Requested-With с содержанием XMLHttpRequest.Вы можете использовать это, чтобы делать то, что вы хотите, но не используйте это как функцию против злоупотребления - это тривиально побеждено.Его следует использовать только для того, чтобы помочь пользователям, которые сталкиваются с URL-адресом, или предоставить им полезную страницу с ошибками вместо, скажем, канала JSON.

0 голосов
/ 04 октября 2011

На самом деле у вас нет способа запретить пользователю посещать URL-адрес напрямую, и все же разрешить AJAX-доступ к этому же URL-адресу. Однако простой способ отговорить их состоит в том, чтобы либо A) отправить ответ обратно как объект JSON (что делает его довольно бесполезным при прямом доступе), либо B) добавить параметр GET к URL-адресу и выполнить перенаправление, когда это произойдет. параметр отсутствует.

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

и

<? 
if( !isset( $_GET['ajax'] ) || $_GET['ajax']!=1 ) {
    header( "Location: index.php" );
    exit();
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...