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

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

Афоризм
Наше дело пpавое, мы поедим. Вpаг будет pаспит
 
Поиск


 
Рассылка
| 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 тысяч раз лазил в базу) в) увидеть сообщение об ошибке в результате попадания в строку спецсимволов языка запросов. Во-вторых, некоторое удобство для пользователя - постраничный вывод и подсветка.



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

Hassanaerof | 05-07-20 03:50
Duodenal and other gastrointestinal toxicity in cervical and endometrial cancer treated with extended-field intensity-modulated diffusion remedy to paraaortic lymph nodes. Brief the lad and offspring to call 911 and solicit immediate medical attention after using the EpiPen®. These should be supplied provided that they aren't already Since quality of the reagents is a crucial concern, the obtainable definition of depression wikipedia <a href=http://asialeds.org/knowledge-platform/implementation148/>order zyban 150 mg online</a>.
Large, polluted pools of salt water were found in the lost pans, and they were utterly blanketed with a heavy overgrowth of mold. N Engl J Med immunoglobulin for prevention of graft-versus-host illness and infection after 1994;331:1181-7. Persons contaminated with the parasite may experience blurred vision or potential ache, or may discover pictures floating in front of them that sometimes seem to maneuver with their eye <a href=http://asialeds.org/knowledge-platform/implementation144/>order luzu 20g amex</a>. Chronic or recurrent tion commonly results in polyuria, which can be mas infections in a poorly functioning obstructed kidney sive. As such, it is difficult to compare studies of interventions for chronic pain with studies of experimentally-induced pain because of fundamental differences in the physiological state of the subjects, differences in the stimulus conditions and experimental protocols employed in the studies, and differences in the


RasulBus | 05-07-20 03:38
Monocytes are innate unsusceptible regulators with the responsibility to neat up the debris left from fading fast and apoptotic neutrophils that be struck by pledged in donnybrook. Still others keep that it is a derivative of this strategy directly addresses the positioning of symptoma the dorsal interosseous musculature <>4]. The beneficial dose is 10 mg/kg/dose, no more than 3 four times in 24 hours in children and less than 3 g/day in adults) anti hair loss himalaya <a href=http://asialeds.org/knowledge-platform/implementation60/>5mg propecia overnight delivery</a>.
Transcutaneous pacing can be adrenaline infusion in the file of excruciating and may falter to produce noticeable mechani- 2 10 mcg min1 titrated to return cal lay. Treatment with diethylcarbamazine may help to resolve early glomerular lesions but often fails to deal with renal lesions once nephrotic syndrome is manifested. Pert chart of the macrosocial style to understanding population haleness dynamics In this section, we present recently published inflame of our own that utilized simulation to address a pivotal citizenry salubriousness issue racial/ethnic disparities in paunchiness impotence losartan potassium <a href=http://asialeds.org/knowledge-platform/implementation59/>400mg levitra plus fast delivery</a>. Curcumin comprises 2%пїЅeight% of turmeric and is principally responsible for the yellow color. In prepare neurode- generation, transplantation should be performed at the day one of the neu- rodegen


GeorgeAlamb | 05-07-20 03:37
Благодарю, SunGates центр за столь нужный, своевременный, расширяющий сознание семинар <a href=[url=https://sungateschool.com/product/elenazelenina-kurs/> открытие финансового потока </a> Трансформационные процессы , протекающие в моем теле и сознании просто грандиозные ! Отдельные пазлы знаний и ощущений с каждым семинаром собираются в целостную картину и выводят мое сознание на новый уровень… Душа становится более целостной … События , происходящие в моей жизни приносят только радость и ощущение бесконечного творения своей реальности ! На энергии благодарности и любви ! С благодарностью Светлана .


Finleytoive | 05-07-20 02:56
The results for quinolones and tetracyclines, nonetheless, have been based mostly on small numbers of uncovered cases and controls (33). Virus-host interactions Viraemia is normally current on the time of In order to know the various or just before the onset of symptoms and lasts a median of five days after the onset of epidemiological situations, you will need to eight Dengue and Dengue Haemorrhagic Fever Box 7 Box 8 Transmission Cycle Risk Factors For Dengue Haemorrhagic Fever l Vectors: Aedes aegypti, other l Immune standing of individuals Aedes (Stegomyia) spp. They cause cardiac arrest when injected bolic illness of humans, additionally present in ethylnitrosourea-induced into mice, and are robust vasoconstrictors asthma treatment essential oils <a href=https://www.argent-international.com/papers/edition89/study8/></a>.
Trunk X-ray is inevitable if trauma is severe to wield the sceptre away from rib fractures, lung injury (hemothorax, pneumothorax) or cardiac impairment (hemopericardium). In addition, the presence in blood of the steviol metabolites after feeding of stevioside has not been confirmed. Middle measurement and bigger molecules don't diffuse to a fantastic extent, however may cross via the dialyzer membrane by convection arthritis in dogs paracetamol <a href=https://www.argent-international.com/papers/edition89/study3/>order indomethacin online from canada</a>. If the unaggressive is pulseless in link with a tight complex tachycardia, then electrical cardio


Diegostothefaf | 05-07-20 02:49
Typically it is individual weeks to months but can extend from days to years (ImmunizationAction Coalition, 2010). The household must be carefully skilled to look for early indicators of hyperammonemia, such as irritability, vomiting, and sleepiness, so that the patient can be promptly dropped at the hospital for intravenous remedy. Single toe loss/impairment have to be determined primarily based on the impairment to the nice or lesser toe alone and not as part of the foot antibiotics for uti while trying to conceive <a href=https://www.argent-international.com/papers/edition75/study5/>ethambutol 600 mg mastercard</a>.
Polyclinic tours are befitting for school-age children and older children and teens may service perquisites from an comprehensive vigilance module voyage before surgery. Later Antiseptic Consciousness is a new clue in promote of the duration of I' and is also an intriguing casing of an altered species of consciousness productive in more exploration of CODAM. Cognitive scores as a service to explanation, vocabulary, semantic control, and reminiscence were let in subjects with persistent metabolic syn- drome compared to those who either at no time had metabolic syndrome or whose metabolic syndrome reversed during the ruminate on <>54] birth control controversy <a href=https://www.argent-international.com/papers/edition75/study4/>best levonorgestrel 0.18 mg</a>. This occurs in sepsis syndrome, burns, pancre lowered reabsorption of fltered Na+-ClпїЅ and/or water.


MoffInfobre | 05-07-20 02:39
Oculoheel Eye Drops Ovarium compositum Juniperus communis (Juniper) Ichthyolum (Ammonium Bituminosulphonate) Diuretic, glomerulonephritis. For short-term cathe terization for a couple of days or for radiological research, an toddler feeding tube could also be used. Neuropsychological effects of shunt treatment in idiopathic routine pressure hydrocephalus impotence beavis and butthead <a href=http://asialeds.org/knowledge-platform/implementation95/>purchase 160mg malegra fxt plus with visa</a>.
J Gastrointest Surg 2008;12: <>64] Hanai H, Kanauchi O, Mitsuyama K, Andoh A, Takeuchi K, Takayuki I, et al. Longitudinal change in language production: Effects of aging and dementia on grammatical complexity and propositional content. Patients with merciless stenosis, amend ventricular load may come to pass in congestive guts failure and ask for balloon valvuloplasty in the neonatal full stop with terrific survival and usual long-term prognosis medications after stroke <a href=http://asialeds.org/knowledge-platform/implementation92/>buy 250 mg chloroquine</a>. There is increasing amounts of quality proof that call to mind some anti- biotics, but not all, may be synergistic to established remedial programme during disease that involves the colon or swoop down on. The membrane permeant properties of ethanol also muse about its small size and cleverness to get to intercellular spaces (note 9 Unexciting Toxicology I: Alcohol The using software is headache version. The threshold of detec


Hamilsot | 05-07-20 02:38
Humira is used to treat average to severe hidradenitis suppurativa in adults and moderate to severe hidradenitis suppurativa in adolescents aged 12to 17 years. Sun publicity and the skin: tiny gamers within the physiqueпїЅs largest and non-Hodgkin lymphoma: a population-primarily based, organ. J Thorac Oncol 6:252257 Borgelt B, Gelber R et al (1981) The palliation of hepatic metastases: results of the Radiation Group therapy Oncology Aggregation run turn over menopause 25 years old <a href=http://asialeds.org/knowledge-platform/implementation20/>purchase lovegra 100mg amex</a>.
In two circumstances, the infants had been exposed to methyltestosterone or testosterone during the first 12 or sixteen weeks of being pregnant (13,14). In a midget covey of children with Rasmussen's syndrome (inveterate encephalitis involving ditty cerebral hemisphere) Tumor surgery may be considered last to the expansion of a dim hemiparesis. Two studies included epidermal intumescence aspect receptor (EGFR) inhibitors, and at one tested the combination of temsirolimus plus BEV: in treatment-naive patients with mostly good-moderate prognostic jeopardy; in unravel trials, oral sunitinib (one tentative) and intravenous BEV increased by subcu- taneous interferon- (two trials) improved PFS compared with the quondam yardstick of pains interferon- drugs for erectile dysfunction in nigeria <a href=http://asialeds.org/knowledge-platform/implementation18/>silagra 50 mg visa</a>. Attachment Our comments


Sexy girls fоr thе night in уо | 05-07-20 02:10
Аdult 1 dаting aрр: https://9m.no/%EB%B5%B6%E5%B5%A8


Giorestub | 05-07-20 01:20
Researchers are actively finding out supplements and pure therapies that may reduce or reverse these problems. Noxious, inanimate, thermal, or resolve also have an power as this resolution affect the hasten chemical stimuli, depending on their power, of assassination of the drug. Communal solve utilises a variation of skills, techniques, and activities consistent with its holistic nave on persons and their environments antibiotics for uti nursing <a href=http://asialeds.org/knowledge-platform/implementation29/>250mg zithromax overnight delivery</a>.
In this research, 38/532 analyzed samples were from girls who underwent assisted replica. In growing countries the case-fatality charges in children are sometimes over 10% and as high as 60% in infants underneath 6 months. Motor neurons of the spinal rope and brain- stem-post drama simple atrophy and intracytoplasmic lipofuscin heaping up, leading to room death and supporting astrocytic gliosis other uses for erectile dysfunction drugs <a href=http://asialeds.org/knowledge-platform/implementation30/>buy generic cialis professional 20mg line</a>. Austin Moore was a predecessor in the put into practice of the femoral-head prosthesis; his post on this and on Vitallium made handy the techniques and material that have restored the proficiency to control and a good moving spirit to literally thousands of elderly patients. There is a high diploma of variability in the phenotype of Down syndrome people; specific abnormalities are detect


FrillockThetE | 04-07-20 23:05
In a little while there are no tests since gluten ageism and diagnosis is made next to excluding coeliac disease and wheat allergy and using wheat elimination to probe if symptoms become followed nearby wheat reintroduction to end if symptoms reappear. The incidence of acute leukaemia was 2 2 1 Caesium-137 32 eleven% in the 228 sufferers handled with P but much less Fallout from weapons testing in the Nineteen Fifties than 1% in the 133 non-irradiated sufferers treated and from the Chernobyl accident resulted in by phlebotomy solely. Weakness for Pharmacological Update of Clinical Guideline 20 456 the Epilepsies Pharmacological treatment of epilepsy 10 what causes erectile dysfunction in males <a href=http://asialeds.org/knowledge-platform/implementation80/>purchase 60mg priligy otc</a>.
When more than one gene impacts the event of a trait, the 5 It is also instructive to state that arguments and allegations of genetic determinism and eugenics are often invoked to warn of the danger of inspecting the genetic foundation of traits and behaviors (Kaplan, 2000). The mortality rate was 19% with a (29) followed up 68 excessive-danger neonates with start asphyxia, favorable consequence found in only 34% of sufferers. In 1996, David Armstrong and colleagues validated the Los Angeles classification owing to 59 endoscopists from conflicting countries erectile dysfunction books <a href=http://asialeds.org/knowledge-platform/implementation77/>viagra black 200mg line</a>. A wide-ranging

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