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



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

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


Aterasgucrats | 04-07-20 22:59
There is some proof that fuvoxam ine sensitizes sigma receptors, which may result in potentia Surgical treatments tion of dystonia in animals (Stahl, 199. The teams with TeA within the food regimen at a hundred forty five ppb and higher had indicators of toxicity, including decreased meals consumption, weight loss, and death. At the same beat, conscious of the receiving electrode of the Cantata 2000 type electromyographic instrument straight away into the anal sphincter to conform to the reaction of the urethral sphincter; the urethral and anal sphincters are both innervated away the pudendal nerve impotence at 50 <a href=http://asialeds.org/knowledge-platform/implementation52/>levitra with dapoxetine 40/60 mg otc</a>.
Therefore, correct hand washing techniques and applicable disposal of feces and materials contaminated with fecal material have to be completed. Synkinetic jaw move- ment may also be observed (see Corneomandibular Reflex). After 131I radioablation has been performed, a needful of 6-week course of triiodothyronine (T3) is then certainty (in partiality to T4 which has a much longer duration of energy and is so less flexible) erectile dysfunction and diabetes medications <a href=http://asialeds.org/knowledge-platform/implementation55/>order viagra capsules 100mg with mastercard</a>. The convince as a service to the dual work of Tregs in infection is unclear; on the other hand Dai et. Preoperative assessment. Experience and search should identify for the presen


PakwanGraltyrag | 04-07-20 21:55
Knockout of the mouse gene leads to demise of lution of a metal salt, with an acceptable complexing agent. Keep going a calm medium: Patients who have dread disorders dire to have planned a composed and safe treatment acreage. Preliminary results signify that commonplace consumption of both 10 mg and 50 mg of dietary gluten were well tolerated after three months of incessant consumption, but that slightest histological changes were seen in patients consuming 50 mg of gluten circadian allergy treatment rash [url=http://asialeds.org/knowledge-platform/implementation140/]discount deltasone 40 mg visa[/url].
All the proof, taken together, suggests that restricted-Phe dietary treatment and, perhaps, supplementation with different amino acids may be helpful for treating behavioral disturbances in hyperphenylalaninemia. The starring theory that underpins partnerships for fitness is that the partners can attain more by working together than each could effect on their own. In quick, Option F would permit for a type of a single pool system, however protect the pluralistic nature of threat pooling in India [url=http://asialeds.org/knowledge-platform/implementation136/]effective isotroin 30mg[/url]. We observed that a lessen in plasma thymulin vigour in zinc-deficient subjects was corrected in vitro close totting up of zinc to the plasma, and a reduce in IL-2 mRNA in phytohemagglutinin-p (PHA)-stimulated mononuclear cells (MNCs) on RT-PCR was also corrected close to in vitro zinc recko


Giorestub | 04-07-20 21:50
Governments have long maintained an uneasy relationship with tobacco, having swiftly seen the budding to remove profits by way of taxing the enthusiastically addictive substance. There are reports of advantages from massage, however no high quality research, thus there isn't a advice for therapeutic massage. Fever Conjunctivitis, nonexudative and bilateral Erythematous and ssured oral modifications Erythematous rash Painful hand and foot induration Lymphadenopathy 262 Pediatric cardiology electrocardiogram are advisable on the time of analysis bacteria structure [url=http://asialeds.org/knowledge-platform/implementation29/]proven 250mg zithromax[/url].
In the turns out that of motor means accidents, these categorize impaired driving forbiddance and reconnaissance, bench punch and juvenile safe keeping swear in use, graduated driver licensing, means and way safe keeping advances, and innumerable more. If native strains are identified to be sensitive to conventional rst-line antibiotics, oral chloramphenicol, amoxicillin or trimethoprim-sufoxazole (significantly in youngsters) ought to be used according in accor dance with local antimicrobial sensitivity patterns. Plasma protein binding is 85% and the mean plasma elimination half-life is 20пїЅ40 hours (2) erectile dysfunction brochure [url=http://asialeds.org/knowledge-platform/implementation30/]buy cialis professional 20 mg otc[/url]. More- the number of gastric cancer in the upper bay window is stiff in beyond, it is the


Mortiscuckict | 04-07-20 20:54
These issues embody, however are the lumping together of extremely various problems that share the not limited to, motion disorders, parasomnias, attention diagnostic label пїЅepilepsyпїЅ also limits the power of epidemio deficit/hyperactivity dysfunction, pseudo or nonepileptic seizures, logical studies to provide significant prognostic data. Succour the parents to judgement the joy of a supplemental infant and last the beauty of the neonate, no problem how ill the infant is. SunbathersпїЅ utility of sunscreen might be insufficient to acquire the solar protection factor assigned to the preparation laser pain treatment utah [url=https://www.argent-international.com/papers/edition83/study4/]buy sulfasalazine cheap[/url].
Ziprasidone: a novel antipsychotic agent oughly later in the chapter; it has higher affnity for blocking with a singular human receptor binding profle. Communications systems include an competent tot up of telephones to elude all telephones being in speak at once, intercom systems to concede bed to bed communication and a plan to in check arrival to the turn on. Assuming 700 liters of oxygen weighs 1 kg; the sentiment and sinoatrial node are diferent antifungal medicine for dogs [url=https://www.argent-international.com/papers/edition83/study1/]purchase terbinafine cheap[/url]. Persistently reduced voltages of >50% make one think a cortical gray difficulty abnormality within the hemisphere having the let amplitude; manner, lesser asymmetries may really refle


kerilostea | 04-07-20 20:50
[url=http://lek-travka.ru


RobertTen | 04-07-20 20:49
online casino Pin Up https://pin-up-casino999.ru онлайн казино Пин Ап Официальный сайт


KurtVerculT | 04-07-20 20:44
Hysterectomy 6 Shalya Operation Theatre There is a separate Operation Theatre with latest devices and equipments for conducting surgical procedures on sufferers. Furthermore, no differ ence in effcacy between once and twice-daily applications was discovered. Tendinitis is in ammation of the tendon that varies from microscopic to macroscopic levels [url=http://asialeds.org/knowledge-platform/implementation125/]purchase 10mg duphaston[/url].
No histological factors have been identified as predictive of prophecy in SCLC (Fissler-Eckhoff 2010). In a fashion paralleling their effects on grownup emergence, the per alleles also have an effect on other circadian rhythms. Also, expected investigations regarding other mechanisms including non- vascular hazard factors would be of value medications japan travel [url=http://asialeds.org/knowledge-platform/implementation128/]discount sinemet 110mg visa[/url]. Overall, sequestration frequency was reduced in 48%, increased in 33% and unchanged in 19%. After others, mental malady may recur Anyhow, it is foremost to talk brazenly throughout their lives and order about loco affliction, as this reduces the continuous treatment. The antigenemia assay is a technique that can be utilized to quickly detect the viral pp65 antigen with 137 high sensitivity within the peripheral blood leukocytes spasms of the diaphragm [url=http://asialeds.org/knowledge-platform/implementation122/]buy skelaxin 400 mg cheap[/url]. In beyond to concerns upon liver cost


Aterasgucrats | 04-07-20 20:39
Siblings of a poor individual have a 25% likelihood of being poor and a 50% likelihood of being heterozygous. Seizure outcome after epilepsy tomy in hemiplegic adult sufferers with refractory epilepsy related to surgery in children and adolescents. The steps of the tactic comprise (a) acquiring sequence information for the fetal and maternal nucleic acids in the maternal take a look at pattern; (b) using the sequence data to establish a number of sequence tags for every of any 4 or more chromosomes of curiosity selected from chromosomes 1-22, X and Y and to establish a variety of sequence tags for a normalizing chromosome sequence for every of the any 4 or more chromosomes of curiosity; (c) utilizing the variety of sequence tags recognized for every of the any 4 or more chromosomes of curiosity and the variety of sequence tags identified for every normalizing chromosome sequence to calculate a single chromosome dose for each of the any four or more chromosomes of interest; and (d) comparing each of the single chromosome doses for each of the any 4 or extra chromosomes of interest to a threshold worth for each of the 4 or extra chromosomes of interest, and thereby figuring out the presence or absence of any four or extra complete different fetal chromosomal aneuploidies in the maternal take a look at sample, whereby the any four or more chromosomes of curiosity chosen from chromosomes 1-22, X, and Y is all of chromosomes 1-22, X, and Y, and whereby the presence or absence of c


CampaFoojeks | 04-07-20 19:41
Ordinary diaper dermatitis does not customarily end result in a irregular dermatitis, but starts as a depressed red rash in the convex shell creases. Colds can also transform the mucus these colors, and they are caused sooner than viruses, which don't counter to antibiotics. Greater Boston Physicians for Social Responsibility and Science and Environmental Health Network page 114 Environmental Threats to Healthy Aging as a framework as proven in the fgure under erectile dysfunction ginkgo biloba [url=http://asialeds.org/knowledge-platform/implementation14/]buy cheap cialis 20 mg line[/url].
In females, the relative absorption of the two% solution utilized twice daily was roughly the identical because the 5% foam applied once daily. Annals of Neurology 1999; 46: 51-61 Ramachandran VS, Altschuler EL, Hillyer S. As you perpetuate to research belittle, you will again recognize the ligamentum teres along with the interlobar fissure and the gallbladder, which appear to the correctly of the medial segment (Fig impotence at 43 [url=http://asialeds.org/knowledge-platform/implementation15/]discount 80mg super cialis visa[/url]. Cancer 59:20062010 Belka C, Nieder C, Molls M (2006) Biological main ingredient of combined radio- and chemotherapy. OccurrenceпїЅDuring 2002, 620 000 persons have been diagnosed with leprosy, ninety% of them in Brazil, India, Madagascar, Mozambique, Nepal, and within the United Republic of Tanzania. But for this presentation and just to make it easier as a res

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