PHP

#php #jquery #redirect #load

#php #jquery #перенаправление #загрузка

Вопрос:

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

$(«#div1»).load(«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> — это несколько

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

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

Ответ №1:

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

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

и

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

Комментарии:

1. @jQuerybeast: Спасибо за предупреждение — забыл закрывающую квадратную скобку. Теперь должно быть хорошо.

Ответ №2:

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