Войти Регистрация

Определить ajax запрос на PHP


В данной статье мы будем определять, откуда идет запрос? С ajax или с простой формы. Для определения ajax запроса, существует простой кусок PHP кода, который использует параметр HTTP_X_REQUESTED_WITH, суперглобального массива $_SERVER. Как нам известно ajax запрос, посылается с помощью объекта xmlhttprequest. Если подзабыли или не понимаете о чем я, прочтите очень полезную статью о взаимодействии ajax с php. Если кто-то уже определял тип запроса, тому и объяснять нечего, код простой и достаточно понятный. Смотрим пример:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')

 {

    // Если запрос послан с xmlhttprequest, то есть это ajax запрос

    echo 'Определен ajax запрос!';

    exit;

}

//Если это другой запрос

echo 'Определен другой запрос!';

Некоторые сервера могут не поддерживать параметр HTTP_X_REQUESTED_WITH, это так же необходимо учитывать. В коде мы проверяем существование элемента массива, а также его наполненность данными о запросе, тут же переводим его значение в нижний регистр (функция strtolower) и сравниваем с xmlhttprequest. Если выражение верно, то значит это ajax запрос. Если выражение ложно это простой запрос. Вот так просто можно определить ajax запрос.

Зачем определять ajax запрос?

Кто определял, тот знает, не мне вам объяснять. Например, в целях безопасности, если вы не хотите, чтобы данные были отосланы каким-то другим методом, как не ajax. И это очень важно ставить такие проверки, если используете ajax приложения.

Это также полезно при написании многогранных приложений, и вы хотите что-бы была форма с javascript (ajax) и без javascript. Для этого нужно определить наличие ajax (js) а при посылке на скрипт обработчик, определить каким методом был послан запрос и выполнить соответственные действия.

Это все, если знаете еще применение этой незамысловатой штуке, или хотите высказать замечания, пишите комментарии! 



Дальше: PHP: скрипт оценки на PHP + jQuery + AJAX


Дискуссия по теме     3 Комментария 
Добавить комментарий
mclotos 09.06.2017 в 13:40
win1251 must die
Тарас 27.12.2011 в 15:24
Юрий, не проще будет делать автоматический бэкап самой БД. Вот для размышления: http://sitear.ru/material/mysql-backups http://sitear.ru/material/autobackup-mysqldump http://sitear.ru/material/mysqldump-primer-skachat
Юрий 26.12.2011 в 22:15
Есть такой вопрос. Я сделал форум на phpbb3. Там, в админ. панели, есть возможность сохранить резервную копию, выбрав таблицы и нажав на кнопку "отправить". А возможно ли узнать, что за запрос отправляется по этой кнопке, чтобы можно было по расписанию выполнять этот запрос? В админ. панели нет расписания. Но есть в кабинете хостинга.
Просмотров: 7010