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

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

Афоризм
Hельзя опеpеться на то, что не сопpотивляется.
 
Поиск


 
Рассылка
| Soft-Ежедневник - обзор программ прямо к Вам на e-mail
 
 
Полезное!
 
7 лучших
  Аэрореклама в Москве
  Mega Portal
  Лекарственные препараты и косметика
  Алмазный инструмент
  Jeck
  
  
 
  Библиотека > 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 | >

Mirzokix | 24-11-22 23:44
Failures of rotation (Chronic peptic ulcer rarely give rise to gastric carcinomas, 1. A healthy, term infant (birth weight and intercourse not specified) was ultimately delivered (5). Most business consultants also distinguish worth for it; the provider by selecting it between radical and incremental innovation, though the excellence isn't over different therapies; and the affected person by all the time very useful erectile dysfunction statistics us <a href=https://www.skip.edu.hk/introduction/section4/Aurogra/>generic aurogra 100 mg free shipping</a>.
The anvil is then withdrawn from the bowel and secured with a handbag string suture earlier than finishing the anastomosis in accordance with the usual operative steps of the KnightGriffen method. Although each effort has been made to make sure that therapy and different information are presented precisely on this publication, the final word duty rests with the prescribing doctor. The surgical case is canceled, and the donor coronary heart is re-routed via the organ-sharing network to the next suit- A medications zanaflex <a href=https://www.skip.edu.hk/introduction/section4/Septra/>generic septra 480mg with mastercard</a>. This sort of powder could be light, dark, or fuo opaque adhesive gel lifters, usually black or white; and rescent and utilizes the ferromagnetic properties of iron silicon-type materials which are spread onto the surface powder mixed with pigment powders. Idiopathic focal unexplained adult nephrotic syn


Jerekshovitomo | 05-11-22 22:00
Disadvantage - the suturing is tough - Shearing of the tissue occurs - the repaired wound tends to be pucked. Sometimes a nosebleed wants extra remedy, corresponding to flling the nose with gauze or a balloon to cease the bleeding. The п¬Ѓrst type of formulation <>4, 26, 36, seventy three] doesn't keep in mind any histological constituents and attempt to describe the global mechanical habits of the tissue with out referring to its underlying microstructure anxiety and panic attacks <a href=https://sja.pi.gov.br/part2/Luvox/>order luvox 100 mg online</a>.
Neonatal Neurodevelopmental Follow-Up Program Early antibiotic exposure and antagonistic outcomes in preterm, of cup feeding as a supplemental, alternative feeding methodology Connecticut Children’s Neonatal Neurodevelopmental Follow-Up very low start weight infants. Ischemic tissue oxygen capacitance after hyperbaric oxygen remedy: a new physiologic concept1997, Plast Reconstr Surg, Vol. But iron-oxidizing bacteria, which are found all over the place in the environment, usually colonize the filtration media, and will find yourself being accountable for the majority of iron removal hypertension and headaches <a href=https://sja.pi.gov.br/part2/Microzide/>discount microzide 25mg without a prescription</a>. It is way less widespread in less developed areas of sity epidemic spreads worldwide, there's great concern that the world; nevertheless, the mortality fee in these areas is larger the global incidence of endometrial mos


MiltenZib | 27-10-22 17:52
Wound therapeutic could also be prolonged by overseas our bodies, an infection, ischemia, diabetes, malnutrition, or scurvy. The commenter believes that, from an actuarial perspective, this methodology isn't valid since the complete rate obtained by summing the separate Part A per capita rate and Part B per capita price does not yield the identical end result as the speed calculated utilizing beneficiaries with each Parts A and B. Other potentialities include a sponAs a result of frequent bleeds, hemophilia sufferers usually have taneous germline mutation in the otherwise regular allele of a debilitating and progressive musculoskeletal lesions and deforheterozygous female or a disproportional inactivation of the mities and neurologic defciencies after intracranial hemorX chromosome with the traditional gene, termed excessive lyonization medications known to cause tinnitus <a href=https://www.tpocr.com/med/vastarel/>quality vastarel 20mg</a>.
This reviewer additionally pointed to the similarity between the ends in the uncovered groups and knowledge from historical controls as a further issue that weakens the findings. We have assumed that these processes are primarily based on a change within the section state of the liposome membrane. Effects of methylphenidate on intelligence and a spotlight elements in boys with attention-deficit/hyperactivity dysfunction insomnia zippy <a href=https://www.tpocr.com/med/sominex/>cheap sominex line</a>. Teaching He ought to be capable of p


Cobrynliaisbups | 27-10-22 10:03
The gut microbiota and its infuence on human vitamin, metabolism, physiology, and immunity are addressed, and a number of other probiotic species and strains are mentioned to enhance the understanding of modulation of intestine microbiota. J Assist Reprod Genet for luteal help improves being pregnant rate in 2006;23(1):15-21. In women, this phase is characterised by a thrust of exercise, throughout which playacting and tomboyishness reach their peak heart attack exo xoxo <a href=http://www.dnahelix.com/03/hyzaar/>50mg hyzaar sale</a>.
In more extreme circumstances, lateral radiographs of the knee will typically present a lower in homogeneity of the infrapatellar fats pad, soft tissue swelling, and a prominence/fragmentation of the tibial tuberosity. This finish can only be achieved if the period of imprisonment is used to make sure, as far as attainable, that upon his return to society the offender just isn't solely prepared but able to lead a regulation-abiding and self-supporting life. Practice ought to be discussed collaboratively to ensure that it is manageable for the Veteran erectile dysfunction family doctor <a href=http://www.dnahelix.com/03/sildalist/>buy sildalist with mastercard</a>. Infant formulation that provides the mandatory elements of protein but not the offending amino acid is on the market. Immerse affected body half in scorching water to scale back the ache related to the toxin 5. Primary pulmonary hypertension happens most frequently in women aged 20 t


JackMic | 06-10-22 15:56
When faced with a shopper who's unable to access services, referral to out there peer support sources (offine and online) is recommended. In cases of dry ear, perforation may be paranasal sinuses and allergy) is necessary. Reproduced, with permission пїЅ Reduces the variety of children requiring endo-tracheal of the publisher, from the medical use of oxygen symptoms 3 days after embryo transfer <a href=http://www.whalecenter.org/outcomes/order-dramamine-online-in-usa/>purchase dramamine 50mg amex</a>.
Scarring alopecia is Stage 4 (atrophic/hypopigmented) is Ann Dermatol Venereol 127 (Suppl. No con trol sufferers demonstrated an improvement of 2 or extra lines whereas 24% demonstrated visual acuity loss. Of cabbages and kings: some concerns on classifications, 1996;119(pt 1):17пїЅ40 definition of cholesterol in hindi <a href=http://www.whalecenter.org/outcomes/buy-cheap-vytorin-online-no-rx/>buy vytorin on line amex</a>. No causal relationship between maternal Lyme disease and congenital abnormalities brought on by B burgdorferi has been documented. Von GraefeпїЅs signal), medial rotation of the eye, and pupillary constriction 296 Ptosis P seen on tried downgaze or adduction of the eye. Melanoma staging: Evidence-based adjustments within the American Joint Committee on Cancer eighth version most cancers staging guide gastritis quick fix <a href=http://www.whalecenter.org/outcomes/order-zantac/>generic zantac 300mg without a prescription</a>.
The gene has three regions subj


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

Имя:
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 обязательна.