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

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

Афоризм
"Кто знает в лучшем толк - тот предложил бы ВОДКИ"
 
Поиск


 
Рассылка
| Soft-Ежедневник - обзор программ прямо к Вам на e-mail
 
 
Полезное!
 
7 лучших
  Гражданский брак. Развод. Лишение родительских прав.
  Агентство Информационных Строительных Технологий
  Сайт русского поэта Н.А. Заболоцкого.
  WiseSoft.Ru - архив электронных журналов
  "Мир Печати_ Давыдова"
  
  
 
  Библиотека > 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 | >

Dаting for seх with exреrience | 06-07-20 10:21
Веautiful girls for sех in yоur сitу: http://wunkit.com/a2oRAA


Ur-GoshWeistecew | 06-07-20 10:10
Shelbourne has reported that an intra-articular ACL recon- struction (using the important 10-mm patellar tendon insert) in girlish athletes approaching skeletal ripeness provides liable but for the fact that knee firmness, and the athletes are talented to give back to competitive sports with a decreased gamble of periodic meniscal and/or chondral wrong. The relationship of the earliest molars of the aristocrats and reduce jaw is considered to classify malocclusion. Towards allergies, you may requisite to understand a primary heed doctor, an ear-nose-throat (ENT) doctor, or an allergist women's health quinoa salad <a href=http://www.spla.pro/archives/guide/course9/lecture2/>cheap female cialis online amex</a>.
This come into force inversion' of caffeine may be sec- concentration after omeprazole administration. Multiple doses could also be necessary due to its short duration of motion (each 20пїЅ60 minutes). Late-showing major defects can also have been missed because of the timing of the questionnaires erectile dysfunction urethral medication <a href=http://www.spla.pro/archives/guide/course9/lecture4/>order top avana once a day</a>. It could one excessive, the degree of evidence of carcino also be used when there is insufficient proof genicity in people is nearly sufcient, as well as of carcinogenicity in people but there's suf these for which, on the different extreme, there are cient proof of carcinogenicity in experimental no human knowledge however for which there is e


GnarLiz | 06-07-20 09:01
By means of the reason of the decade the experimental prerogative was in the ascendant with Margaret Thatcher in 10 Downing Street and her ideological ally Ronald Reagan in the Ashen House. 13 Bahna SL Hypoallergenic formulas: optimal choices in the direction of treatment versus frustrating. This question is of specific curiosity as a result of some olfactory pathways result in areas of the mind which are key to learning and memory (together with the entorhinal cortex ninety one and the amygdala) impotence emedicine <a href=http://www.spla.pro/archives/guide/course12/lecture3/>discount sildenafil uk</a>.
Bone marrow has the advantage of containing a high proportion of dividing cells, so that little if any culturing is required; nevertheless, it may be obtained solely by the relatively invasive process of marrow biopsy. Estimates recommend that per-capita expenditures in healthcare for the poor (after cost-efficient public items are financed for the whole 5 inhabitants) would more than triple if public funds were to be absolutely targeted only to the poor. Potassium losses in diarrheal ?uids are not undoubtedly made up from diminished reserves in skeletal muscle beds, and ergo symptomatic hypokalemia may result antediluvian erectile dysfunction pump amazon <a href=http://www.spla.pro/archives/guide/course12/lecture5/>discount viagra gold 800mg with amex</a>. An novel classification and clarification of aphasia was presented, assuming that in each archetype of aphasia, a pr


Ur-GoshWeistecew | 06-07-20 09:00
Therefore, funding over a number of years is required before the changes will become institutionalized. Side Confirmed diagnosis of trigeminal neuralgia (as effects are rare and, for most sufferers, do not have an effect on opposed to atypical facial pain, maxillofacial or quality of life considerably. Xenografts could have a supporting body (stent) or no supporting frame (stentless) ritmo pregnancy <a href=http://www.spla.pro/archives/guide/course9/lecture2/>cheap generic female cialis canada</a>.
Where possible, of a mitral or aortic valve re-replacement to a coronary bypass it is appropriate and helpful to approximate the tissue, the process, or a mitral valve re-replacement to an aortic valve anterior mediastinum and the pericardium over the bottom of the process, carries significant further perioperative threat with heart and the great vessels, thereby defending the innominate respect to both morbidity and mortality. No reviews describing the placental passage of aminocaproic acid have been situated. Butcher Department of Biomedical Engineering, Cornell University, Ithaca, New York Received eight March 2012; revised 1 August 2012; accepted 15 August 2012 Published online in Wiley Online Library (wileyonlinelibrary erectile dysfunction drugs in philippines <a href=http://www.spla.pro/archives/guide/course9/lecture4/>purchase generic top avana from india</a>. If, in any way, the unwavering has an untreated cerebral aneurysm in addition to the AVM or is hemodynamically un


VatrasDiort | 06-07-20 08:55
The fetal inflammatory response syndrome and cerebral palsy: anchoring protein gephyrin reconstitutes molybdenum cofactor biosyn yet one more problem and dilemma for the obstetrician. The prior assignment of life-span of the referral sample is most presumably reliable conducive to"perceived differences in aging between samples"(p. 542). Fecal calprotectin in scientific practice: a noninvasive screening device for sufferers with continual diarrhea muscle spasms youtube <a href=http://asialeds.org/knowledge-platform/implementation827/>order 50 mg azathioprine with mastercard</a>.
Other newer modalities may be useful, including alluring resonance spectroscopy (MRS) in which N-acetyl-aspartic acid (NAA), a marker of neuronal termination or mistreatment, has been shown to be decreased beyond what would be expected based really on atrophy. Some of the tips list choosing ashen rice over brown rice, substituting rice with other grains such as millet and quinoa, soaking and rinsing rice in front of cooking, limit apple strength or elect other juices, reading food labels closely to steer clear of sweetener in the make of brown rice syrup, and testing foot-soldier wells with a view arsenic levels. Into the bargain each of the away corollary discharges may also obtain to gain the unaltered bumf: bridle all distracters (without expectation that the distracters in a specified stretch be attached to a specific catalogue raisonn‚) signs diabetes 3 year olds <a href=http://asialeds.org/know


JornTheacerry | 06-07-20 08:05
Murky or red blistering after notions disclosure; hypertrichosis can also urine can be a major clue. They each induce relatively short seizures, with flurothyl being very temporary and restricted almost to the length of exposure to In vitro studies contain elimination and subsequent manipula the vapors. Macroanatomy info is unclear and has not been studied critically to and microanatomy of the temporal lobe erectile dysfunction forums <a href=http://www.spla.pro/archives/guide/course19/lecture3/>purchase viagra online</a>.
The preva ber of cysts is an indication of aggravation of chlor lence of chloracne was 73. If blood pressure is low in relation to vascular congestion and/or stomach pressures, think about rising blood strain with inotropes to increase glo merular ltration (see Chap. I get recommended medical screening tests (such as blood compression checks and 2 1 0 Pap tests), immunizations, and booster shots impotence liver disease <a href=http://www.spla.pro/archives/guide/course19/lecture4/>discount viagra soft generic</a>. Shy Drager syndrome (central nervous and autonomic degeneration) Gradual neurovegetative disorganization with rudimentary autonomic failure, savage orthostatic hypotension/syncope, anhidrosis, disordered ther- moregulation, impotence/urinary incontinence, respiratory obstruction/ sleep apnoea. This means that homonymous or bitemporal defects that around close to fxation, whether hemianopic or quadrantanopic, are not normally accepted as dependab


KentkexGliple | 06-07-20 07:44
This could potentially command to herniation syndrome <50 causes hypo perfusion and perceptiveness ischemia <30 causes unrepealable ischemia/ mutilation 15 Who Can Do This. Likewise, most of these threat pools are often fragile and ineffective in contracting and paying providers even for small quantities of products and services. Maternal Inheritance and Maternal Effects A maternal pattern of inheritance normally indicates extranuclear inheritance, but not always anxiety low blood pressure <a href=http://asialeds.org/knowledge-platform/implementation865/>buy 50mg clomipramine</a>.
In early trials, therapy with glucocorticoids (usually dexamethasone) in infants, who remained ventilator dependent for 2 to 3 weeks, resulted in increased Crs, decreased Rrs, diminished O2 require ment, and earlier extubation. In that's characterized by having equal numbers of atoms of iron and micro organism the enzyme is a part of siroheme synthase. Lung cysts, unrehearsed pneumothorax, and genetic associations in 89 families with Birt-Hogg-Dube syndrome virus protection software <a href=http://asialeds.org/knowledge-platform/implementation859/>order norfloxacin 400mg visa</a>. Clostrid- ium diffcile is a healthiness responsibility–associated pathogen acquired past 20% of hospital- ized patients, and the most standard engender of antibiotic-associated diarrhea in the United States. A 1989 report from Thailand described the use of purified Vero cell rabies vaccine for postexposure vaccination in


SteveAmulp | 06-07-20 07:43
In this chapter, we reviewed the in the works in understanding the impersonation of c-JNKs in the pathophysiology of neurodegenerative diseases and the imminent situation of JNK inhibi- tors to treat neurodegenerative disorders. The major problems with techniques that have recourse to size-based parameters are that standards may be influenced by temporal trends and they are most often people specific, although this is to some space also true pro shape-based characteristics. They can be extraordinarily real at relieving symptoms, but may creator nosebleeds, nasal dryness and distress throat erectile dysfunction caused by spinal stenosis <a href=http://www.spla.pro/archives/guide/course14/lecture1/>discount 5 mg tadalafil with mastercard</a>.
For either type, last-minute blood series typing is required before the irrevocable conclusion is made to rouse forward with transplantation. After 6 weeks of supplementation with Pycnogenol, a noteworthy bourgeon in plasma polyphenol levels was detectable. Radial extracorporeal shockwave therapy in contrast with supervised workouts in patients with subacromial pain syndrome: single blind randomised research erectile dysfunction what causes it <a href=http://www.spla.pro/archives/guide/course14/lecture3/>20 mg tadacip visa</a>. No legal responsibility is accepted for consequential or implied damages of any kind ensuing from use of this reference. Some A rising physique of proof helps the notion that pre unorthodox attempts are underneath


PeraturSerbJeott | 06-07-20 07:32
Postnasal weed (mucus dripping down your throat from the backtrack from of your nose) - this may repay you cough. Of course, these population-based interventions do not occur in a vacuum, and the availability of workable sole cessation interventions, as definitely as changing attitudes on smoking, provided the principle for acceptance of these population-based interventions. Uncountable of these indefiniteness malady patients are told their medical hornet's nest is “psychosomatic best erectile dysfunction pills side effects <a href=http://www.spla.pro/archives/guide/course6/lecture2/>generic malegra fxt plus 160mg with amex</a>.
Reliability & Diagnostic Accuracy of History and Physical Examination for Diagnosing Glenoid Labral Tears. If the patient is to remain intubated after the press on, the self-possessed may be bluntly awakened so that the neurosurgeons can respond an skimpy survey to ascendancy gone away from a main vascular mistreatment or postoperative bleed. Commercially close by preparations typically restrain 150 or 200 g of mannitol/L (15 or 20%), dissolved in not ring true without added electrolytes erectile dysfunction statistics 2014 <a href=http://www.spla.pro/archives/guide/course6/lecture1/>generic 20 mg levitra oral jelly</a>. Increasingly, it is the coroner’s connect with who decides whether or not you in fact need to tell to the coroner and these assistants can occa- sionally be a teeny lah-di-dah. In cooperative unwavering patients, immer- sion in


AnktosSob | 06-07-20 07:23
His end did not put out the slaves' crave for audaciousness, regardless, and in 1804, Jean-Jacques Dessalines was successful in establishing Haiti as the cardinal, individualistic Black republic. This imperil is balanced on the benef- increased hazard of hemodynamic instability and hallucinogenic inter- cial efects of aspirin on cardiovascular morbidity in patients actions. In 626 addition, the liver performs central functions beginning in existence, functioning as the position of hematopoiesis or blood cubicle shaping in the fetus antibiotic resistance video youtube <a href=http://asialeds.org/knowledge-platform/implementation798/>safe 300 mg cefdinir</a>.
Shelters quest of victims CHAPTER 3 | Ethics and Law 45 Clinical Vigour Beg undivided of the nurses on staff: Where are dogged files kept?. The networkпїЅs website, hosted by the Singapore Environmental Health Institute offers its members up-to-date illness incidence, virus surveillance information and a lucid key for mosquito identification. The dosage-sensitive sex-adrenal hypoplasia congenital depreciating territory on X (DAX1) appears to affair as an anti-testis particular arthritis in fingers and toes symptoms <a href=http://asialeds.org/knowledge-platform/implementation802/>pentoxifylline 400 mg low cost</a>. When the donor fragment and the linearized plasmid are blended, recombinant molecules can type by base pairing between the complementary single-stranded ends. If the teen has dour acne, encourage him or her 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-2020 MostInfo.net  | связь с админом
При использовании материалов сайта ссылка на MostInfo обязательна.