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

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

Афоризм
Итак, здоров - и тут врачи бессильны!
 
Поиск


 
Рассылка
| Soft-Ежедневник - обзор программ прямо к Вам на e-mail
 
 
Полезное!
 
7 лучших
  Топливный катализатор "Тонус"
  Наружная реклама - АбрисМСК. Рекламные тонкие световые панели и наборные ценники.
  Jeck
  More then varez...
  Свадебная фотография. Фотограф Екатерина Романенкова
  
  
 
  Библиотека > 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 тысяч раз лазил в базу) в) увидеть сообщение об ошибке в результате попадания в строку спецсимволов языка запросов. Во-вторых, некоторое удобство для пользователя - постраничный вывод и подсветка.



Комментарии
Оставить комментарий
страница 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | >

Umbrakawarbuh | 29-09-22 14:56
Cervical cancer • Testosterone remedy in FtM sufferers doesn't increase the chance of cervical cancer, though it might enhance the danger of minimally abnormal Pap smears due to atrophic changes. The results indicate that there are + + + fewer pur pdx nad transductants than any other class, suggesting that this class is “more durable” to generate than the others. This is prevented by heating items within the dialysis machine to maintain the temperature fixed arteria arcuata <a href=http://www.knowships.org/medprograms/order-cheap-innopran-xl-online/>purchase genuine innopran xl line</a>.
Key components include: substances contained in bottles holding more than 1,000 dosage the date that the inventory was conducted. Non-Hodgkins lymphoma amongst phenoxy herbicide-exposed farm workers in western W ashington State. It is essential to put the pin correctly to avoid damage to vessels, nerves, joints and growth plates impotence of organic origin meaning <a href=http://www.knowships.org/medprograms/buy-cheap-cialis-online/>safe cialis 2.5 mg</a>. Procedure and affected person care Before Inform the parents about the function and methodology of the test. Recurrent paroxysms of unilateral ache ful?lling the superior laryngeal nerve is a department of the vagus. Obtain the usual curve by using pyridoxine User Quality Control hydrochloride at ranges of 0, 1, 2, 4, 6, eight and 10 ng per fask Identity Specifcations (10 mL) rheumatoid arthritis numbness <a href=http://www.knowship


frankiews11 | 28-09-22 06:02
New super hot photo galleries, daily updated collections
http://reality.porn.bestsexyblog.com/?alexandria

aussie hardcore young porn movies free lesdian porn extreme femdom porn alida porn star forced interacial breeding porn


BossSkink | 20-09-22 17:59
The expert panel feels that the evidentiary weight is overwhelming in its determination that care in this mannequin is superior and in the patients greatest interest. Because man's adaptation is extremely specialised, we're capable of correlate, through a research of his health variations and the fundamental laws of the universe (as far as we are able to decide these), our information of each towards higher comprehension and applicability of the higher to the individual drawback. If treatment price of hypercalcaemia is to be thought-about a measure of surgical performance, nevertheless, these e#ects should be taken into consideration antibiotics for recurrent sinus infection <a href=http://www.mentor.edu.pl/publications/purchase-cheap-tetracycline-online-no-rx/>tetracycline 500mg low price</a>.
Although additional studies are wanted, there's evidence that marijuana use in pregnancy is related to developmental toxicity, similar to growth restriction, lengthy-term neurobehavioral deficits, and potentiation of the fetal results of alcohol. Multiple remedy modalities have been described for sufferers with persistent rupture or a rerupture that isn't repairable primarily. Nonspecific dermatitidesmalignancies are usually of B cell origin and characterized as diffuse large-cell tumors bacterial growth rate <a href=http://www.mentor.edu.pl/publications/order-colchicinum-online-no-rx/>0.5 mg colchicinum with mastercard</a>. Timely intervention utilizing a collection of medical count


Huritneerrussy | 15-09-22 10:55
Bacteriophage-specific genes, though considerably enriched in comparison with microbiomes, are a tiny minority; most of the genes for which homologs are detectable seem 10 the Virus World and its evolution 301 to represent a random sampling of bacterial genes. She also believed that 198: many would have to be maintained on opioids for prolonged periods to function as a result of a i Patients did not expertise euphoric, transignificant quantity of people who attempted quilizing, or analgesic effects. Single- versus multifraction stereotactic body radiation remedy for pancreatic adenocarcinoma: outcomes and toxicity antibiotic 875125 <a href=https://cucuta.gov.co/meddata/buy-online-minomycin-no-rx/>buy discount minomycin 100mg on-line</a>.
Two-12 months Oral Toxicity – Rat Isotretinoin was administered to rats (eighty/intercourse/group) as a dietary admix for two years. H–Selection of Drugs for External Ear Infections (Ototopicals) Ototopical brokers are formulated to treat problems corresponding to the following: 1. Although hysterectomy is usually thought of safe several attainable issues are related to the procedure bacteria metabolism <a href=https://cucuta.gov.co/meddata/order-misultina-online/>discount misultina on line</a>. There have been stories that a variety of medication appear to guard against listening to loss from ototoxic insults from cisplatin, aminoglycoside antibiotics and noise. Other chronic infammatory cells embrace lymphocytes, plasma cells, eosin


Jerekjef | 08-09-22 16:33
Reference Wassenberg, Molero-Luis and Jeltsch The therapy consists of pyridoxine, dopamine agonists, monoamine oxidase inhibitors and anticholinergic brokers for symptomatic treatment. Pharmacists with any stage of training: ranking of districts by density пїЅ lowest 30 and highest 30 districts lowest 30 districts highest 30 districts Density per Density per Rank District State lakh popпїЅn Rank District State lakh popпїЅn 593 Uttar Dinajpur West Bengal 1. Verification of endotracheal tube placement following intubation, Prehosp Emerg Car medicine lake montana <a href=http://www.aswadsurgicalgroup.com/section/order-online-compazine-cheap-no-rx/index.html>generic compazine 5 mg on line</a>.
The response is taken into account abnormal if the affected person behind the patient who's seated with the cervical spine feels pain radiating down the arm previous the elbow to the ring in a impartial position. Protection in opposition to experimental bubonic and pneumonic plague by a recombinant capsular F1-V antigen fusion protein vaccine. Case reviews and small case series have also demonstrated the efficacy of treating esophageal perfora- tion and esophageal anastomotic leaks with self-expandable plastic and metallic stents <>4–sixteen] treatment zinc toxicity <a href=http://www.aswadsurgicalgroup.com/section/buy-cheap-pepcid-no-rx/index.html>order on line pepcid</a>. Although insufficiently evidence-based, accepting a �permissive hypotension� as a result of restrictive fluid


MusanGodythots | 02-09-22 22:17
Though there isn't a common settlement as to the cutoff that separates excessive, medium or low intensity, we used the following obtained by consensus from our clinical specialists for labeling the forest plots: low <1. Clinical proof Soya + Nicotine A 33-year-old woman taking tranylcypromine 10mg four instances daily introduced to an emergency department with world headache For dialogue of a research showing that soya isoflavones (daidzein and stiffness of the neck and was found to have a blood strain of and genistein) brought on a minor lower in the metabolism of 230/140mmHg and bradycardia of 55bpm. This transport and storage system not however stores the worthless devastate, but it protects the tissues from indemnity outstanding to the wide scale of pH and osmolarity of the urine, prevents infection by foreign organisms, and benefit of the male, provides reproductive functions medicine that makes you throw up <a href=https://dm.edu.pe/wp-content/uploads/medicine/purchase-online-glucophage-sr/index.html>cheap glucophage sr 500 mg fast delivery</a>.
Biochemical knowledge three Department of Nephrology, Kidney Transplantation and Arterial and serum renalase ranges were in contrast between patient and management Hypertension, ChildrenпїЅs Memorial Health Institute, Warsaw - Poland, teams. Goals: В¦ Determine the way to further enhance the immunogenicity of influenza vaccines by way of adjuvants or various supply approaches. It does not need to be added to the milk; it could


Narkamuphorma | 02-09-22 01:29
When both sensory and motor capabilities are concerned, the impairment values derived for every are mixed (Combined Values Chart, p. Previous anaphylaxis A patient with a historical past of anaphylaxis throughout common anaesthesia 3 months in the past now presents for an evacuation of retained merchandise of conception. If you or Registered in England and Wales your carer, have any concern about your remedy or No erectile dysfunction commercial <a href=http://ider.gov.co/documents/levitra-plus/index.html>buy levitra plus 400mg with amex</a>.
Currently, the literature on maskers and/or listening to aids for the therapy of tinnitus in adults is restricted. Paranasal sinuses children: measurement analysis of maxillary, sphenoid, and frontal sinuses by magnetic resonance imaging and proposal of volume index percentile curves. Ecotopes are thought of to be secure when the feeding supply is at all times current and hiding locations are everlasting, allowing the development of larger colonies, as happens with R erectile dysfunction drugs generic <a href=http://ider.gov.co/documents/vardenafil/index.html>order genuine vardenafil on line</a>. A grunt with resentment is anticipated if tapping, radiography, examination using a steel the animal has anterior belly ache. In distinction, breast cancer happens Tender or lumpy breasts are one of the most as a unilateral painful rm lump only about 5 widespread the reason why girls consult their gyne- p.c of the time. This could possibly be


SobotaEncoste | 03-08-22 16:02
Infective endocarditis Pathogenic organisms (often bacteria or fungi) within the blood might colonise any a part of the endocardium, however the most typical sites are on or close to the guts valves and around the margins of congenital coronary heart defects. The wall of the venous pouch contained remarkable inflammatory infiltrate (monocytes and neutrophils) and excessive levels of fibromuscular proliferation completely across the aneurysm wall, leading to a outstanding neointimal thickening and luminal narrowing. It is an antipsoric remedy, which means that it's effective in opposition to skin circumstances which, when forcefully suppressed, can inflict the internal linings of the body and the nervous system medications mobic <a href=https://felizdeserto.al.gov.br/documentation/buy-olanzapine-online-no-rx/>generic olanzapine 7.5 mg with visa</a>.
Step 4 most popular remedy is Steps 2–4: Consider subcutaneous allergen immunotherapy for patients who've allergic based mostly on Evidence B, and various bronchial asthma (see Notes). Past research found that people who smoke are likely to beneath-report their smoking episodes because of social norm pressures <>7,58]. He or she can shortly separate the white follows a characteristic pattern: there is an preliminary lower in chips away from the remainder, but the separation of the blue chips the luminance threshold due to cone adaptation, adopted by a from the red takes longer knee joint pain treatment <a href=https://felizdese


DennisSwaminnap | 30-07-22 22:01
Furthermore, normal ranges vary considerably, depending on the method used, so it's the general purpose of this guideline is to supply essential to interpret take a look at ends in the context of the clinicians with practical steering for the administration of appropriate reference range. The half-life of sildenafil and vardenafil is about four hours, suggesting that the normal window of efficacy is 6-8 h following drug ingestion, although responses following this time period are nicely recognised. Incorporating information from the captive inhabitants and survival and population estimates from the wild will refine that erectile dysfunction treatment nyc <a href=http://www.charlesedisonfund.org/med-research/order-online-levitra-jelly/>best order for levitra jelly</a>.
This is an ovarian teratoma arising from argentaffin cells of intestinal epithelium within the teratoma. For right sided procedures, a 5mm trocar is commonly positioned in the higher midline close to the xyphoid course of to accommodate a traumatic locking grasper forceps which might grasp the diaphragm and hold the 39 liver up exposing the higher pole of the kidney, adrenal and suprarenal vena cava. Granulocyte-macrophage colony stimu- and tumor cells produce fundamental fibroblast progress issue erectile dysfunction market <a href=http://www.charlesedisonfund.org/med-research/order-levitra-online-no-rx/>purchase 20mg levitra with visa</a>. Compromised blood supply leads to infarct of the subchondral bone ben


BenitoAccerce | 30-07-22 11:23
Applicants for first or second-class should present this information yearly; candidates for third-class must present the information with each required examination. Your employer to take away duties that could is required to try to implement prove bodily tough or reasonable adjustments and seventy two. This report was written with the coordination and help of an Internal Response Team on the European Centre for Disease Prevention and Control allergy medicine good for allergies to cats <a href=http://www.charlesedisonfund.org/med-research/purchase-desloratadine-online/>desloratadine 5 mg mastercard</a>.
Metformin is, at greatest, no more effective, and, based mostly on a big multi-center trial, less efficient than clomiphene alone. If the patient is in an intermittent atrial fibrillation and whether it is rapid and inflicting signs, medicines may be used to try to convert the rhythm to regular sinus rhythm or a cardioversion (electrical shock to the heart, utilized beneath sedation) could also be used. How can there be complete occlusion of the internal carotid arteries and this patient not have been dead at the time initial evaluation treatment centers for alcoholism <a href=http://www.charlesedisonfund.org/med-research/order-cheap-selegiline-online-no-rx/>order selegiline 5mg line</a>. Many of the research with surgical or procedural interventions reported intermediate outcomes corresponding to technical success, hospital size of stay, or estimates of blood loss related to

Имя:
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-2022 MostInfo.net  | связь с админом
При использовании материалов сайта ссылка на MostInfo обязательна.