- 1
- 2
- 3
- 4
- 5
- 6
- 7
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// Если к нам идёт Ajax запрос, то ловим его
echo 'Это ajax запрос!';
exit;
}
//Если это не ajax запрос
echo 'Это не ajax запрос!';
Govnocoder#0xFF 16.11.2011 16:29 # +1
- Нет, это ajax запрос!
Govnocoder#0xFF 16.11.2011 16:31 # +5
-Ага, потом отжимаем у него мобилу, деньги и отпиздюливаем ногами.
Lure Of Chaos 16.11.2011 16:52 # 0
beetle 16.11.2011 17:02 # 0
Govnocoder#0xFF 16.11.2011 17:04 # 0
beetle 16.11.2011 17:08 # 0
про аякс я не смотрел((
Nemoden 16.11.2011 17:15 # 0
bot-minurast 16.11.2011 17:24 # 0
Просто так ни с того не с сего.
Открываю, листаю, читаю, понимаю -
Вот оно...
Govnocoder#0xFF 16.11.2011 17:28 # 0
Его ещё и рекламировали?! Holufuckingshit.jpg
Vasiliy 16.11.2011 17:34 # 0
Govnocoder#0xFF 16.11.2011 17:58 # 0
istem 16.11.2011 18:08 # +4
Govnocoder#0xFF 16.11.2011 18:13 # +1
Vasiliy 16.11.2011 17:15 # −2
Сокращается до !empty($_SERVER['HTTP_X_REQUESTED_WITH'])
А остальное надо снифиром смотреть. Не уверен что так.
Да и какая разница Аякс или там хуякс. Запрос есть запрос пришел запрос отдай ответ. Если чего секурное хочешь вернуть проверяй права.
Govnocoder#0xFF 16.11.2011 17:16 # 0
khujax
Vindicar 16.11.2011 21:59 # −4
Пример: ссылка с onclick. При переходе перебрасывает на страницу с какой-то информацией, а по клику делается аякс запрос к этому же скрипту и информация подгружается в текущую страницу.
Тогда PHP-скрипт должен отдавать полный HTML для простого запроса и JSON/чуть обернутые в HTML данные для аякса. Если сделать два скрипта, они будут по сути дублировать друг друга. Если сделать дополнительный параметр, задающий выходной формат... ну можно, конечно, но смысл? Браузеры, умеющие HttpRequest, всё равно посылают заголовок.
WGH 16.11.2011 23:13 # +4
Vindicar 17.11.2011 09:43 # 0
Хм, про этот заголовок я как-то забыл, спасибо что напомнили.
Nemoden 17.11.2011 05:59 # −1
Это какой-то тонкий троллинг или для вас правда нет разницы?
bugmenot 17.11.2011 06:21 # 0
Nemoden 17.11.2011 07:42 # 0
dev6alexander 17.11.2011 07:53 # −3
Заголовок - HTTP_X_REQUESTED_WITH
отсылают большинство java script фрейморков которые и позволяет нам без особых усилий понять что пришел ajax запрос
Vasiliy 17.11.2011 08:09 # 0
dev6alexander 17.11.2011 08:53 # −1
2. а остальны 20% как вы работате с ними?
Nemoden 17.11.2011 09:05 # 0
еще интересней...
А почему вам не интересно? Ну например, у вас есть обработчик ajax запросов, а вы вдруг решили проверить HTTP_X_REQUESTED_WITH и вдруг обнаружили, что заголовок такой не передается 99% ваших пользователей, а еще и куки не передаются и User-Agent пустой. Какова ваша реакция - фиг с ним, - зато я обрабатываю запросы правильно?
dev6alexander 17.11.2011 09:17 # 0
Vasiliy 17.11.2011 09:43 # 0
Nemoden 17.11.2011 09:51 # 0
Vasiliy 17.11.2011 10:01 # 0
Формат ответа стоит проверять всегда.
Nemoden 17.11.2011 10:07 # 0
Если запрос ajax, отдать XML/JSON/HTML и т.д.
Если не ajax, отдать HTML страницу.
> Формат ответа стоит проверять всегда
Каким образм?
roman-kashitsyn 17.11.2011 10:12 # +2
> Если не ajax, отдать HTML страницу.
Странный подход. Не знаю, как там в PHP, но в Java принято исходить из следующих факторов при выборе формата возвращаемого контента:
1. Значение Accept.
2. Расширение запрашиваемого документа.
3. Использовать тип ресурса по-умолчанию (html, к примеру).
Nemoden 17.11.2011 10:25 # 0
Да и по большому счету то, что вы написали не конфликтует с моими словами. В чем странность моего подхода тогда?
Принимать во внимание Accept и расширение запрошенного документа стоит только в том случае, если вы самостоятельно отдаете все документы вашей информационной системы. В php эта практика далеко не всеми примелема. В частности я, например, не буду картинки отдавать через PHP, - я лучше подниму сервер под статику. Тем не менее, иногда удобно управлять любым контентом ИС централизовано - с этим я тоже согласен.
Полемика вокруг того, что я говорю, - нельзя не знать и не понимать то, как был запрошен документ (вы например смотрите на Accept), а Vasiliy говорит, что он не заморчивается по поводу любых HTTP-заголовков и считает, что важно только то, как данные обрабатываются - абсолютно неприемлемое мной мнение.
roman-kashitsyn 17.11.2011 10:34 # +2
dev6alexander 17.11.2011 10:40 # −1
Кто-то просто обращается к одной и той-же странице передавая доп. заголовок.
К примеру
my_site.com/get_news.php
my_site.com/get_news.php
отличий нет но если обратиться с этой странице посредством доп. заголовка то данные будут возвращенные в другом формате.
Методов уйма но это не говорит о том что метод проверки на доп. заголовок говно код. Кому как нравиться так и делайте
roman-kashitsyn 17.11.2011 10:51 # 0
my_site.com/get_news.html
my_site.com/get_news.json
и получать разный тип контента. Более того, со Spring даже лишний код писать не придётся.
dev6alexander 17.11.2011 10:53 # 0
dev6alexander 17.11.2011 10:33 # −1
roman-kashitsyn 17.11.2011 10:46 # 0
dev6alexander 17.11.2011 10:49 # −1
Что не актуально не понял - ассинхронные запросы или заголовок этот много страдальный?
dev6alexander 17.11.2011 10:51 # −1
roman-kashitsyn 17.11.2011 10:54 # 0
dev6alexander 17.11.2011 10:55 # 0
roman-kashitsyn 17.11.2011 10:59 # +3
bugmenot 17.11.2011 09:00 # 0
к нам едет ревизор!
(OMG)
Lure Of Chaos 17.11.2011 12:13 # +3
у меня по данному вопросу немного двоякая позиция:
1. нужно тщательно проектировать API, и делать, чтобы по одному урлу отдавался контент строго определенного формата.
my_site.com/get_news.html - отдает хтмл и хуяксом, и так
my_site.com/get_news.json - отдает жсон и так и так.
2. в случае хтмл детект заголовков может быть нужен, чтобы решить, отдавать ли необходимый кусок или полностью, лэйаут, так сказать - для graceful degradation. Как, например, на говнокодике "Комментарии"
7ion 18.11.2011 16:42 # −2
JSON должен стучаться куда-нибудь вообще в свою дверь, допустим /json.php?act=news&id=15, а сама новость доступна как /news/15
Кто вообще придумал, что один и тот же файл должен обслуживать все на свете? Неправильно поняли суть контроллера в MVC что ли?
И еще
>в случае хтмл детект заголовков может быть нужен, чтобы решить, отдавать ли необходимый кусок или полностью, лэйаут, так сказать - для graceful degradation. Как, например, на говнокодике "Комментарии"
Можно просто передать очевидный параметр ?no_head и все. Нужно всегда делать очевидные решения.
Допустим какой-то новичок хочет сделать агрегатор комментариев говнокода, ну захотелось ему.
Вот он смотрит и ох*евает - как с одного урла приходят разные по структуре вещи. А с параметром все просто и понятно.
roman-kashitsyn 18.11.2011 16:47 # 0
> Неправильно поняли суть контроллера в MVC
You can not into REST.
dev6alexander 21.11.2011 08:35 # 0
7ion 21.11.2011 13:53 # 0
Я просто про то, что для разного контента пути должны быть обязательно различными.
dev6alexander 21.11.2011 13:57 # 0
7ion 21.11.2011 14:16 # 0
Абсолютно верно. У меня все запросы на выдачу пользователю html-контента всегда идут через единый контроллер.
Но при этом не стоит фанатеть, пихая все через контроллер. Например, доступ к API логичнее реализовать через другой контроллер, при этом не стоит делать глобальный контроллер для этих двух - в этом просто нет смысла.
Слепое следование MVC - далеко не всегда хорошо.
union 18.07.2016 10:35 # 0
<?
echo "$_SERVER[HTTP_X_REQUESTED_WITH]<br />";
?>
результат
Notice: Undefined index: HTTP_X_REQUESTED_WITH in Z:\home\mycms.rul\www\style\script\php\r eg_form.php on line 23
вывод: HTTP_X_REQUESTED_WITH в топку )))
guestinho 19.07.2016 01:55 # 0
inkanus-gray 19.07.2016 02:41 # 0
<?
dfskljgsd;lhjs;ohyiujt;slgk\lkfhjd;flhjf d;lhjrtoihjdl;tkhjdf;lghkjhg;hjgdf;hglkd ;
?>
Результат:
Notice: Use of undefined constant dfskljgsd - assumed 'dfskljgsd' in C:\__\b.php on line 2
Notice: Use of undefined constant lhjs - assumed 'lhjs' in C:\__\b.php on line 2
Notice: Use of undefined constant ohyiujt - assumed 'ohyiujt' in C:\__\b.php on line 2
Fatal error: Undefined constant 'slgk\lkfhjd' in C:\__\b.php on line 2
Вывод: пхп в топку.
3_14dar 19.07.2016 03:08 # +1
Голландский?
inkanus-gray 19.07.2016 14:32 # 0
guest 15.04.2017 06:24 # −5
<a href=http://mikrosaym.blogspot.ru><img>http://s015.radikal.ru/i332/1703/5e/143d0d0673f2.png</img></a>
НЕ ВЫХОДЯ ИЗ ДОМА Деньги на банковскую карту
КАК ЭТО РАБОТАЕТ?
ОФОРМЛЯЕТЕ ЗАЯВКУ
ПОЛУЧАЕТЕ ПОДТВЕРЖДЕНИЕ
ПОЛУЧАЕТЕ ДЕНЬГИ
<a href=http://mikrosaym.blogspot.ru><img>http://s020.radikal.ru/i711/1703/0d/40730bbd75ed.png</img></a>
<a href=http://bit.ly/2oI4psW>ВЫДАВАЙ МИКРОЗАЙМЫ С ГАРАНТИРОВАННОЙ ДОХОДНОСТЬЮ ОТ 192% ДО 265% ГОДОВЫХ И ЗАБУДЬ О ФИНАНСОВЫХ ПРОБЛЕМАХ</a>
-lu-
guest 25.04.2017 01:16 # −5
ЛЮБЫЕ ВТОРЫЕ ОЧКИ RAY-BAN В ПОДАРОК!
МОДЕЛИ и цвета НА ВЫБОР! Выберите свои Aviator, Wayfarer или Clubmaster!
http://kshop2.biz/KKUYcW - http://s16.radikal.ru/i191/1703/50/899c19cb0fe0.png
<a href=http://kshop2.biz/KKUYcW>брендовые солнцезащитные очки 2014</a>
<a href=http://kshop2.biz/KKUYcW>солнцезащитные очки prada официальный</a>
http://kshop2.biz/KKUYcW - очки ромео популяр купить
http://kshop2.biz/KKUYcW - очки для компьютера купить днепр
<a href=http://kshop2.biz/KKUYcW>широкие солнцезащитные очки купить</a>
http://kshop2.biz/KKUYcW - http://s019.radikal.ru/i634/1703/80/511fb7c108bc.png
=RAY BAN=
guest 29.04.2017 14:53 # −5
ЛЮБЫЕ ВТОРЫЕ ОЧКИ RAY-BAN В ПОДАРОК!
МОДЕЛИ и цвета НА ВЫБОР! Выберите свои Aviator, Wayfarer или Clubmaster!
http://kshop2.biz/KKUYcW - http://s020.radikal.ru/i700/1703/63/e61a680fd4f0.png
<a href=http://kshop2.biz/KKUYcW>золотые оправы очков купить екатеринбург</a>
http://kshop2.biz/KKUYcW - очки виртуальной реальности для смартфона купить в москве
http://kshop2.biz/KKUYcW - солнечные очки шаблон для фотошопа
<a href=http://kshop2.biz/KKUYcW>каким лицам идут солнцезащитные очки</a>
http://kshop2.biz/KKUYcW - alpina очки солнцезащитные
http://kshop2.biz/KKUYcW - http://s019.radikal.ru/i634/1703/80/511fb7c108bc.png
=RAY BAN=