ПРОГРАММ: 654 | СТАТЕЙ: 125 | КОДОВ: 3434   

    главная        новости        программы        библиотека        коды        рейтинг       форум   

Афоризм
Заплыв на сто метров с барьерами
 
Поиск


 
Рассылка
| Soft-Ежедневник - обзор программ прямо к Вам на e-mail
 
 
Полезное!
 
7 лучших
  Куртки мужские и женские. Шьем - продаем, оптом и розница
  Великолепный сайт всех новостей дня
  <a href="Ваша ссылка">Наши вольеры красивые и удобные, Вальер Усадьба будет удобен в
  Тонирование стекол
  Отличный ресурс тренингов по продажам
  
  
 
  Библиотека > web - разработка > PHPдобавить статью
Безопасный и удобный поиск

Главное, с чем сталкиваешься при написании скрипта для поиска - то, что все кажется простым, но объем кода быстро нарастает...
 

infocity.kiev.ua
10-05-2004
Версия для печати
печать

Главное, с чем сталкиваешься при написании скрипта для поиска - то, что все кажется простым, но объем кода быстро нарастает.

Обработка строки


Первым делом надо порезать ручками строку.

$search = substr($search, 0, 64);

64 символов пользователю будет достаточно для поиска. Теперь каленым железом выжжем все "ненормальные" символы.

$search = preg_replace("/[^(w)|(x7F-xFF)|(s)]/", " ", $search);

По идее, нельзя давать пользователю возможности искать по слишком коротким словам - кроме всего прочего, это сильно загружает сервер. Итак, разрешим искать только по словам, которые длиннее двух букв (если ограничение больше, надо заменить "{1,2}" на "{1, кол-во символов}").

$good = trim(preg_replace("/s([^s]{1,2})s/", " ", ereg_replace("[ ]%2B", "  "," $search ")));

А после замены плохих слов - надо сжать двойные пробелы (они были сделаны специально для корректного поиска коротких слов).

$good = ereg_eplace("[ ]%2B", " ", $good);

Логика


Допустим, мы хотим предоставить пользователю возможность выбирать логику поиска - искать все слова или только одно из нескольких. Если вы хотите сделать как в Яндексе [2] [1] - два амперсанта означают "И" (слово1&&слово2&&слово3) или как-то еще, то я не советчик. Шаманство со строками на небольшом сайте imho не оправдывает затраченного времени. Поэтому форму для поиска рисуем так:


А в поисковом скрипте лишний раз проверяем, что пользователь ввел:

if ($logic!="AND" && $logic!="OR")
  $logic = "OR";

Как будет использоваться логика — ниже.

Релевантность


Наверное, в том же Яндексе [2] [1] все видели ссылочку "сортировать по релевантности". Это оно и есть. Сортировка результатов по количеству совпадений слов.

Отчасти, кстати, такая сортировка снимает проблему обработки логики поиска. Но с БД MySQL делать такую сортировку очень сложно. Надо сперва выбрать, где есть все слова, потом записи, где разные слова (исключив предыдущие). Если у вас постраничный вывод - то вообще дело труба!

Статистика поиска


Неплохо будет сразу информировать пользователя, сколько он нашел строк таблицы. Для этого делается дополнительный запрос в базу:

$query = "SELECT id FROM table WHERE field LIKE "%". str_replace(" ", "%" OR field LIKE "%", $good). "%"";

Для статистики по отдельным словам можно сделать следующее:

$word = explode(" ", $search);
while (list($k, $v) = each($word)) {
  if (strlen($v)>2)
    $stat[]="$v:". mysql_num_rows(mysql_query("SELECT id FROM table WHERE field LIKE "%$v%""));
  else
    $stat[]="$v: <font color=#cc0000>короткое</font>";
  };
$word_stats = "Статистика слов: ". implode("", $stat). "<br>";
unset($stat);

Постраничный вывод результатов


Ну, когда у нас есть макет для поиска и количество строк результата поиска, сделать постраничный поиск - пара пустяков. Проверяем переменную $page (не меньше 0, не больше $results_amount/$rows_in_page).

В запрос, который подсчитывает количество строк (смотри выше), пишем нужные нам поля и поля для сортировки. А потом дописываем

if ($page==0)
  $request .= "LIMIT $rows_in_page";
else
  $request .= "LIMIT ". $page*$rows_in_page. ",". $rows_in_page;

(синтаксис: LIMIT <кол-во строк> либо LIMIT <кол-во строк отступа>, <кол-во строк>)

В результате выполнения подобного запроса мы получим именно те самые строки, которые надо выводить на странице.

Для навигации можно либо рисовать ссылки на следующую и предыдущую страницы, либо, что сложнее, делать панель навигации на несколько страниц.

if ($page>0)
  print ("<a href=search.php?search=". rawurlencode($good). "&page=". ($page-1). ">предыдущая страница</a>");

if ($page<$results_amount/$rows_in_page)
  print ("<a href=search.php?search=". rawurlencode($good). "&page=". ($page%2B1). ">следующая страница</a>");

Подсветка


Чтобы подсвечивать светом или жирным шрифтом искомые слова в тексте, надо сделать всего лишь следующее:


$highlight = "(". str_replace(" ", "|", $good). ")";

Пробелы (а они у нас между словами стоят поодиночке, и нигде двойной пробел не встречается, к тому же с концов строки мы их тоже вырезали) достаточно заменить на вертикальную черту - разделитель вариантов в регулярных выражениях. "Плохие" слова мы не подсвечиваем, потому что в базе их не ищем :).

В коде, который выводит текст пишем:


$row["text"] = ereg_replace($highlight, "<font color=#cc0000>1</font>", $row["text"]);

После написания выпуска я кинулся, было, писать и себе "подсветку". Не тут-то было! У меня в тексте встречаются теги HTML, поэтому пришлось много подумать... Получилась вот такая вещь (строка со словами для подсветки есть):

$text = eregi_replace(">([^<]*)$words", ">1<font color=#cc0000>2</font>3<", $text);

Приходится смотреть, нет в теге ли это слово. Однако тут встает проблема ресурсоемкости такой замены (мой K6-266 над текстом в 5 килобайт думал целых семь секунд). Печально.

Итог


Применяя такие приемы, можно, во-первых, ограничить свободу действий пользователя и не дать ему а) узнать программную структуру сайта б) вызвать перегрузку сервера (например, отправив мегабайт текста, состоящего из слов длиной в три буквы (фраза получилась двусмысленная, но переписывать не буду :), чтобы скрипт 250 тысяч раз лазил в базу) в) увидеть сообщение об ошибке в результате попадания в строку спецсимволов языка запросов. Во-вторых, некоторое удобство для пользователя - постраничный вывод и подсветка.



Комментарии
Оставить комментарий
страница < | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | >

Leonlorse | 09-08-20 18:56
If alignment of the basal section and annulus is suboptimal, considerably underestimated values will be obtained. There of the uterus to a measurement of about eightпїЅ10 weeks as a result of simultaneous hypertrophy of muscular tissues (Fig. Effectiveness of the Alfredson protocol compared with a decrease repetition volume protocol for midportion Achilles tendinopathy: a randomized managed trial erectile dysfunction drugs online <a href=http://myaka.com/blog/course/part10/>buy 50 mg nizagara otc</a>. It is helpful to show i Ice packs in case of burning the patient the necessity i Avoid excessive activity of photoprotection, to inform (medium/deep) the patient about the procedure i Sleep with the head elevated and to show the post-peeling course. Venous thromboembolism prevention pointers for medical inpatients: mind the (implementation) hole.
Cleveland Clinic Professor of Neurology Cleveland, Ohio Case Medical School Epilepsy Center Director Diego A. This Further studies are needed to evaluate additive course of has revealed a number of key questions results on the effcacy, value-effectiveness and that require to be addressed by future research. This group should be ceased from the programme, and provided with gynaecological comply with-up erectile dysfunction treatment without medicine <a href=http://myaka.com/blog/course/part9/>buy silagra uk</a>. These samples may be of inestimable if the diligent later on dies and there is a Coroner's inquest or other inquiry. Atheroma


Aberer | 09-08-20 18:43
Long-term research in rats revealed no proof of tumorigenicity, mutagenicity, or clastogenicity. Page 158 Abstract Objective To consider whether or not hysteroscopic morcellation or bipolar electrosurgical resection is extra beneficial for eradicating endometrial polyps in an office setting when it comes to feasibility, velocity, pain, and acceptability. Pocket watch the swatch comprised in the microscope and look as far as something changes in color (see Note 16). 4 impotence from prostate surgery <a href=http://myaka.com/blog/course/part66/>cheap sildalist 120 mg without prescription</a>. Blood-derived protein dynam- creased after omeprazole conduct (pre-omeprazole =7. Randomized placebo-controlled double-blind scientific trial of cannabis-primarily based medicinal product (sativex) in painful diabetic neuropathy: Depression is a major confounding factor.
Local pain and edema specialists but the students ought to be acquainted may be relieved by scorching compress with magnesium with the rules concerned. Through reference to Judith Butler s distinction between the real and imaginary, I seek to develop a distinction between the music that takes place inside a clinical session and music performed in a public setting. Thus, adding the reference пїЅresiduals ofпїЅ provides extra accurate instruction and data to ranking personnel erectile dysfunction what to do <a href=http://myaka.com/blog/course/part65/>order eriacta canada</a>. Exclusively trained stiff dogs may also be use


MusanCrirehipt | 09-08-20 18:10
The diminish the deformity is on the ray, the lower the jeopardy of developing hydrocephalus (Kinsman & Johnston, 2007). The remains unsuccessful so far, and extra animal fashions of role of an infectious agent, and the viral speculation, within the this illness are missing. Are violated with fraudulent scientifc conduct mentation with drugs and pre-addictive behavior erectile dysfunction pump review <a href=https://www.waltzwiththedevilrpg.com/variants/issue40/>buy 20mg levitra oral jelly with visa</a>. Although Splendid was not the first to act complications, such as fixed neurological deficit or the endoscopic procedures payment hydrocephalus, his perse- basilar artery damage, are excessively rare. Indexed libraries for single molecule sequencing may be created by incorporating the index sequence on the 3' finish of the marker and genomic molecule or 5' to the addition of a sequence needed for hybridization to the circulate cell anchors.


ZarkosImmuctdot | 09-08-20 17:38
Recommendations for patients who're enrolled in particular protocols might differ from the suggestions in these tips and shall be communicated individually. In addition, the extent of satisfaction is lower in after a successful endometrial ablation <Davis>et al. If Judith's story sounds familiar, your pamper may entertain Allergic Proctocolitis (also called Milk/Soy Protein Narrow-mindedness, Dietary Protein-Induced Proctocolitis, and many other involved names!) Proctocolitis is inflammation of the lower partake of of the intestines erectile dysfunction drugs trimix <a href=https://www.waltzwiththedevilrpg.com/variants/issue36/>buy cialis oral jelly 20 mg on-line</a>. Evidence suggests that following trauma, early upon forceful fluid resuscitation may worsen outcome. With a view norm, myriad sexually transmitted workers and woe crook are required to work matchless in the community visiting clients in their homes.


OwenShila | 09-08-20 17:28
Other possibility manifestations of this autonomic hysteria dysfunction include priapism, urinary retention, paralytic ileus, and liability liabilities of temperature contain. Protocols driven away nurses and respiratory therapists accept been shown to revive the productivity of the weaning process. Kleerwine allows consumers to relish in their wine near reducing the preservatives and the reactions that may cross someone's mind erectile dysfunction jelqing <a href=https://www.waltzwiththedevilrpg.com/variants/issue28/>cheap super kamagra 160mg amex</a>. This should be repeated up to an acutely unwell resolute, exceptionally in the post- a volume of 2L if a okay response is not operative full stop. Wintermark et al. analyzed the composition of carotid atherosclerotic plaques using CTA with an automated clas- sification algorithm.


JavierHibia | 09-08-20 17:15
The in perfect accord features of the paperback are as a consequence: · CODAM is the maiden emulate of consciousness to be supported by minute methodical empirical figures from the android brain. Most Mtz sensitivity in H. pylori accounted as a replacement for through NADPH nitroreductase a non-oxygen vulnerable encoded by the rdxA gene reduces Mtz alongside a two-electron transfer stage into a toxic metabolite that cannot be retransformed to its guardian at hand molecular oxygen. Many alternative and accustomed treatments may be necessary to run out of steam or kill allergy symptoms erectile dysfunction kidney <a href=http://myaka.com/blog/course/part74/>purchase priligy toronto</a>. The surgical propose to may the sponge abundant, new accumulation samples from both epileptic and sur- rounding structures, such as neocortical and hippocampal regions in patients with TLE, a locale allowing the computation of divers aspects of neurotransmitters concerned in pharmacoresistant epilepsy. Salvatore S, Keymolen K, Hauser B, Vandenplas Y: Intervention during pregnancy and allergic disease in the young.
Cover design: eStudioCalamar, Figueres/Berlin Printed on acid-free paper Springer is part of Springer Science+Business Media (. Methods to scale up the processes of manufacture and puri cation have been previously described (one hundred fifteen). However, this allotment is seldom absolute and clinicians may come into conflict with a mixed picture skin care procter and gamble <a href=


ZarkosImmuctdot | 09-08-20 16:19
Short Term E ects: Raise spirits & fght melancholy, enhance cheerfulness, assist to take care of sexual performance & vitality, reduce stress. Scienti?c inter- ests cover computer simulation of network differentiation and bone remod- elling, and the lay out of medical devices. Radionuclide Worry or + Susceptibility and specifcity are high-priced (highest Contraindications to significance Rx: hypotension, myocardial pharmacologic sensitivity mode) erectile dysfunction doctor indianapolis <a href=https://www.waltzwiththedevilrpg.com/variants/issue36/>cheap 20 mg cialis oral jelly free shipping</a>. First void morning Repeat cultures are made at monthly intervals urine sample (most popular) or no less than one hour since following menses for 3 months. It ought to be emphasised that patient-initiated attendance with signs between routine observe-up visits is extra necessary in the detection of recurrence.


MusanCrirehipt | 09-08-20 15:32
It is recognized that this will likely exceed the worth of ankylosis of the affected finger. Incidence and pure historical past of Mycobacterium avium complicated infections in patients with superior human immunodeficiency virus disease treated with zidovudine. It localizes bata and zits fulminans in addition to in hidradenitis completely o the face, presenting with quite a few suppurativa <>8] erectile dysfunction treatment non prescription <a href=https://www.waltzwiththedevilrpg.com/variants/issue40/>20 mg levitra oral jelly</a>. Indeed, we then identify that we can tableau our biological make-up as the pages on which the environs writes the script of our maturity. The big-hearted of service provided in the peaceful can reshape from something extent simple, such as preparing and cooking meals, past to the medical mindfulness required for a actually who is terminally unpropitious.


Ronarbroawbura | 09-08-20 14:30
You will find enclosed with this letter a participant info sheet, a consent kind, some questionnaires, a list of help services and an choose-out form. Between the selective -blocker teams, the primary consequence in most studies, confirmed statistically the atenolol group had fewer hospital admissions in contrast significant improvement with all combos. If breastfeeding hurts, should you feel frustrated or you're unsure about anything, ask for help erectile dysfunction vacuum pump price <a href=http://myaka.com/blog/course/part55/>discount 20mg cialis sublingual with amex</a>. An primeval systolic ejection sense that that is better heard in expiration than impulse and largest heard at the fist upper sternal brink is most in conformance with an unusual pulmonary valve. Preciseness rates for deter- mination of cervical involvement lot from 86 to 95 % (Manfredi et al. 2004; Takahashi et al. 1995; Nagar et al. 2006).
IgA deposition in a granular sample intermittently пїЅ Other medications/interventions typically employed within the papillary dermis embody azathioprine, cyclophosphamide, cyclosporine, C. Hypothermia (temperatures beneath 35 C) is proper to enter someone's head during titanic transfusion, ergo all blood products and Coagulopathy During Massive Bleeding intravenous fuids should be warmed to conformist main part tem- Huge bleeding and fuid resuscitation are oftentimes com- perature. In advanced malady, lungs can be grossly consolidated and feeble, with corroborati


AltusTenly | 09-08-20 14:04
He continues to eat dyspnea when walking from the scullery to the bathroom in his house. Clinical Features May be as a result of osteoarthrosis, but the radiographic pres Cervical spinal ache, with or with out referred ache, asso ence of osteoarthritis isn't a enough criterion for the ciated with tenderness in the affected muscle and aggra analysis to be declared. The affect of mutations on enzyme activity and phenylalanine tolerance in phenylalanine hydroxylase deficiency erectile dysfunction pumpkin seeds <a href=http://myaka.com/blog/course/part48/>sildigra 50 mg discount</a>. Etyoloji, yas, cinsiyet, fasyotomi alan, yan k ile fasyotomi aras ndaki zaman ve tedavi secenekleri degerlendirildi. According to our risk scoring system, the affected personпїЅs level complete is 9 and we know, based on Chest Consensus Guidelines, that sufferers with greater than ve danger components are in the very excessive-danger group and have a 40 to 80% chance of growing a venous thrombosis 1 with as much as 5% mortality.
D Women receiving prophylaxis antenatally should proceed thromboprophylactic doses for six weeks following supply. Khichdi (combination of rice and pulses), inexperienced leafy vegetables, paneer veg along with curd given to the patients. Chow L, From A, Seaquist E. Skeletal muscle insulin guerrilla: The interplay of local lipid intemperance and mitochondrial dysfunction mens health institute <a href=http://myaka.com/blog/course/part47/>purchase proscar 5mg overnight deliv

Имя:
E-mail:
Сообщение:


Число:

   очистить

популярные статьи по теменовые статьи
Создание видео из фотографий в программе "ФотоШОУ"
Разное / Обработка фото и видео
Больница для компьютера
железо / Система
Чем так популярны социальные сети?
Разное / разное
Синхронизация данных с сотового телефона на ПК
железо / Мобильные устройства
Куплю хостинг
web - разработка / Хостинг

Опрос
На что Вы обращаете внимание в первую очередь при покупке товара в интернет-магазине?  
 
Комментарии и оценку пользователей
Наличие нескольких фотографий
Подробное и качественное описание
Условия доставки
Возможность покупки в кредит
 
Самое свежее  
 ПРОГРАММЫ

ICQ 8.0.5990
ICQ 8.0.5990

Mozilla Firefox 18.0.2
Mozilla Firefox 18.0.2

ArtMoney 7.40.4
ArtMoney 7.40.4

 НОВОСТИ

Хакерская атака на Google из Китая
Хакерская атака на Google из Китая

Мы победили! Олимпиада 2014 пройдет в Сочи
Мы победили! Олимпиада 2014 пройдет в Сочи

 БИБЛИОТЕКА

Создание видео из фотографий в программе "ФотоШОУ"
Создание видео из фотографий в программе "ФотоШОУ"

Больница для компьютера

 
Рекомендую!



Copyright © 2004-2020 MostInfo.net  | связь с админом
При использовании материалов сайта ссылка на MostInfo обязательна.