Тут я писал как-то каким образом определить ajax-запрос от не ajax-запроса. Но буквально сегодня ставил один проект на live-server и вот что случилось: у них php настроено как CGI приложение, и в этом случае функция getallheaders не работает :((. Поэтому функция isAjax() приведенная в прошлом посте по данной теме притерпит изменения, а именно. Теперь признаком того, что мы получили ajax-запрос будет являться наличие переменной $_SERVER[‘HTTP_X_REQUESTED_WITH’] равной все тому же ‘XMLHttpRequest’.
Теперь давайте изменим нашу функцию:
function isAjax() { if( function_exists('getallheaders')) { $allHeaders = getallheaders(); $var_key = 'x-requested-with'; $var_value = 'XMLHttpRequest'; } else { $allHeaders = $_SERVER; $var_key = 'http_x_requested_with'; $var_value = 'XMLHttpRequest'; } foreach ( $allHeaders as $name => $value ) { if ( strtolower($name) == $var_key && $value == $var_value) { return true; } } return false; }
пользуйтесь на здоровье 🙂
P.S. я бы не советовал настраивать php как cgi, так оно конечно проще, но простое не всегда лучшее.
Отлично написано! Буду много думать:
Побольше б таких штук: