#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.