Показывать содержимое страницы php, только если вызывается с помощью ajax, а не по прямому URL в адресной строке - PullRequest
1 голос
/ 03 июля 2019

Мне было интересно, есть ли способ проверить, была ли страница PHP вызвана Ajax-запросом. У меня есть страница, которая показывает форму для обновления некоторых данных в базе данных (update.php), но я хочу сделать ее доступной, только если она была вызвана страницей с именем "change_image.php", потому что я не буду показывать форму, если вызывается по прямой ссылке, так как будет без CSS и javascript, потому что они включены в первую страницу (update.php).

Я видел этот ответ в StackOverflow, но он без объяснения причин, и я не знаю, является ли это правильным способом: Ссылка на ответ

Код ответа таков:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) &&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
/** Yes, it was an ajax call! */ 
/* I can call create_mosaic() function here 
 after checking if images have been loaded*/
}

Ответы [ 2 ]

0 голосов
/ 03 июля 2019
0 голосов
/ 03 июля 2019
public function isAJAX() {
  return isset($_SERVER['HTTP_X_REQUESTED_WITH']) && $_SERVER['HTTP_X_REQUESTED_WITH'] === 'XMLHttpRequest';
}

Это немного другая версия.Сначала проверьте, установлено ли HTTP_X_REQUESTED_WITH и равно ли оно XMLHttpRequest, что является признаком, который большинство фреймворков используют (отправляют) со своими AJAX-запросами.

Вы также можете просто отправлять свою собственную переменную с каждым выполненным вами AJAX-запросом ипроверьте его на своей конечной точке AJAX.

Например:

$.ajax({
  url: url,
  data: {
    requestType: 'AJAX'
  },
  type: 'GET'
});

И на своей конечной точке PHP:

if (isset($_GET['requestType']) && $_GET['requestType'] === 'AJAX') {

  // This is an AJAX request
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...