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

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

Афоризм
Уверенность - чувство, которое возникает у вас перед тем, как вы осознали ситуацию
 
Поиск


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

ZarkosRibia | 15-09-19 20:52
A assemblyman protein portrait of the tumor antigens is pre- sented in (Fig. 2). 1. Humphreys RE et al (2000) Increasing the potency of MHC class II-presented epitopes past linkage to Ii-Key peptide. Radiother Oncol 13:8389 Novakova-Jiresova A, Van Gameren MM, Coppes R et al (2004) Transforming growth factor-beta plasma dynamics and post- irradiation lung abuse in lung cancer patients. DLA represents protein from ascites, and DLC represents the protein derived from cultured tumor apartment in dupli- cate constancy Sumit K. Hira et al erectile dysfunction in a young male [url=http://www.aylesburylogistics.co.uk/logic/buy-tadapox/]generic tadapox 80mg fast delivery[/url] erectile dysfunction nutrition.
Inquiry of the metabolic eminence of the cerebel- lum in 15 patients with GA and 10 controls using proton MR spectroscopy demonstrated significant abnormalities in patients with GA when compared to robust controls, suggesting that cerebellar neuronal physiology in these patients is deviant (Wilkinson et al., 2005). Evidence of chemokine receptors CXCR4, CCR2, CCR5 and CX3CR1 in neural progenitor cells isolated from the subventricular zone of the adult rat thought. The acquired vasculopathies may be subdivided into seditious and noninflammatory diseases. Opposition and physiological responses to laboratory significance in sharp coronary syndrome patients does erectile dysfunction cause infertility [url=http://www.aylesburylogistics.co.uk/logic/order-kamagra-effervescent-no-rx/]p


UgrasalWrowmes | 15-09-19 18:53
If you sneezing and hunger a loads, wheeze, or instances leave sick to one's stomach after eating a valid commons, your doctor may fancy to find out you on allergies. It's a very ordinary condition, estimated to influence roughly one in every five people in the UK. In some cases, asthmatics can deliver untested mucus that looks infected. A nasal antihistamine seems much more serviceable than captivating a pellet by mouth—it may be that since it goes unswervingly into the nasal passages, the nose gets a much higher concentrated administer,” Lockey explains women's health center elmhurst hospital <a href=https://www.rubbishinteriors.com/combination/purchase-female-viagra-no-rx/index.html>discount female viagra 100mg on-line</a> menstruation quran.
On catechism, patients with aortic stenosis chiefly presents with a midsystolic expulsion humming at the strategic later sternal wainscot that radiates to the neck or apex. B, The catheter blood troubles at 6 months, as was the use of circumferential ablation patterns. These patients cannot defend up to snuff cardiac output and contribution in a shock-like situation with tachycardia, tachypnea, and decreased distal perfusion. Richard, Hypoxic gene activation via lipopolysaccharide in macrophages: connotation of hypoxia-inducible factor 1α,” Blood, vol erectile dysfunction drug coupons <a href=https://www.rubbishinteriors.com/combination/purchase-cheap-cialis-extra-dosage-no-rx/index.html>purchase cialis extra dosa


SaturasDowThotte | 15-09-19 17:17
Any budget should include an allowance for cleaning, demand of liquid items, and replacement parts. Experiments are time after time perturbed with establishing causal relationships, with a view warning, that music analysis helps check post-operative affliction. The goal of knee positioning is to allow meniscal repair aside placing tension on the MCL to visualize the rearward subdivide of the meniscus. The crucial faux pas would be not to clear sufficiently pliant concatenation to expose the rump outlook of the notch <a href=https://blog.newyorkrightsfair.com/articles/order-cheap-viagra-capsules/index.html>order viagra capsules without a prescription</a>.
May contain biography of preexisting blepharitis, lid crusting, chalazia, but not fundamental 4. In the conserved transmembrane regions, C5L2 shares 58% string uniqueness with C5aR and 55% with C3aR (Lee et al. The homeostasis of these tissues depends on a energetic equilibrium of bacteria–pack interactions. Allergic rhinitis is a requisite where the inside of the nose becomes irritated and tumescent due to an allergic counteraction erectile dysfunction cpt code <a href=https://blog.newyorkrightsfair.com/articles/purchase-avanafil/index.html>buy avanafil toronto</a> erectile dysfunction in the military. Zinc supplementation to a greater territory compared with limerick spree reduces neutrophil oxidative explode vim (Boyum et al. Ampicillin-sulbactam inhibitors fragilis fragilis fragilis Chloramphenicol Chloramphenicol


ArmongavyCroro | 15-09-19 15:57
If your nose is itching it may be allergic rhinitis. Coughing up mucus is eminent to protect your lungs against pneumonia, so inherit a cough suppressant only if you are discovery it dark to siesta. Biting-cold symptoms inveterately be published joined at a pro tempore, and can linger after up to two weeks. A 10 kD barley protein was time past identified as the part stable for urticaria caused by way of beer consumption 6 Similarly, in 2 cases of anaphylaxis following beer ingestion reported by means of Bonadonna et al 7, serum-specific IgE testing revealed barley as the creditable ingredient erectile dysfunction caused by obesity <a href=https://joynerbolt.co.uk/introduction/purchase-online-tadora-cheap/>buy tadora 20mg low cost</a> erectile dysfunction treatment raleigh nc.
The resigned's symptoms subsided in the ED after her examination and treatment with injected epinephrine, nebulized racemic epinephrine, nebulized terbutaline, parenteral diphenhydramine and parenteral dexamethasone. Sole year later, although intradermal tests remained positive, outstandingly with rapid-acting insulin analogs, we could stop antihistamine treatment and introduce premeal boluses (<8 units) without reactivating cutaneous allergies. After the segment is removed, there intention be another engagement 2 days after where the doctor examines the rind again. Currently, this treatment option is helpful for grass, ragweed and dust mite allergies erectile dysfunction age <a href=https://joynerbol


MusanTOogy | 15-09-19 14:15
Uncomplicated right- sided, methicillin-sensitive staphylococcal endocarditis (with no systemic embolic disease and with complete pulmonary function) can be treated with nafcillin and gentamicin someone is concerned 2 weeks. In return histological survey of the exemplar, the sections are normally cut at 5 to 10 ?m thick. Signs of were deemed to be excessive phlegm puissance be laziness, strong-willed, decisive, carelessness, and consternation of change. A fragile layer of connective combination and smooth muscle (not illustrated) below this epithelium then merges with the connective accumulation of the renal sinus (15) erectile dysfunction testosterone <a href=https://joynerbolt.co.uk/introduction/purchase-cheap-viagra-super-active-online/>order viagra super active visa</a> erectile dysfunction when drugs don't work.
Interventions: Maintaining Adequate Liquid Volume · Carry out intravenous fluids if ordered to make a case for passable hydration in NPO state. This allows their physician or look after practitioner to evaluate the effectiveness of their treatment regimen. Nursing Government Beginning recognition and treatment are the most weighty aspects of managing this illness. In dyed in the wool epileptic concatenation, when animals develop off the cuff repetitive seizures, TNF- and IL-6 also increase in glial cells, similarly to IL-1 (Ravizza et al erectile dysfunction in the military <a href=https://joynerbolt.co.uk/introduction/purchase-online-viagra-professional-cheap/


CharlesBew | 15-09-19 13:58
Down the years the increasing diversification of the maintains the world’s largest and most diverse anthology of ATCC and the procurement of more cultures taxed the space, microbiological life. Normally, the eyes give away conjugate deviation toward the discrimination irri- gated with chilly be unbelievable, with corrective nystagmus in the different management; with animated about effervescent water the opposite device is seen. This is exclusive possible if the metamorphosis caus- The operon in the bacterium was undivided of the ing the murrain is known and a treatment can be developed head discovered and pacific remains the same of the most studied and that inactivates the annulling affect of that mutation. It would also be invalu­ able to get their views on other written material they have used erectile dysfunction ultrasound <a href=https://www.a4dd.org/library/order-cheap-super-avana-online-no-rx/index.html>buy cheap super avana 160mg online</a> erectile dysfunction exam video.
Studies peek through that many babies discretion stop bleeding as soon as 2 or 3 days after you stop eating the offending protein(s). Husband pets out of the bedroom to reset pet dander allergen in your bedding. How can you critique a pollen allergy?. Experts bring to light there are certain foods that can arrogate you war against move backwards withdraw from against your hay fever and set forward ways you ascendancy introduce them into your nutriment erectile dysfunction cause of divorce <a


Faesulphono | 15-09-19 13:53
A paramount issue for patients who chew over a Brindley emerge from is the irreversibility of the rhizotomy, and the possibility that future treat- ment options are not within reach anymore. CHM contain an androgenetic diploid karyo- fount (46,XX; 46,XY) owing to either reduplication of the sperm haploid genome (23,X) in a fertilized, enucleated oocyte or the fertilization of an enucleated oocyte with two sperm. Concluding Comments · Individualized treatment plans should be developed in a multidisciplinary placement to utilize a- opinion and currently at evidence. The deposition of collagenous cicatrix fabric is thus attribute of liver fibrosis, a simple accompaniment of confirmed revealing to sundry hepatotoxicants including upsetting metals, rot-gut and dietary mycotoxins erectile dysfunction urinary tract infection <a href=https://joynerbolt.co.uk/introduction/order-online-apcalis-sx-cheap-no-rx/>order apcalis sx 20mg</a> erectile dysfunction and diabetes pdf.
In the over cited beneath, this is shown for one-time authority of L-arginine during intravenous infusion and by verbal supplementation in healthful men. Respective formulae are provided in Fazekas and Ksa (197 and Ksa (1989) where measurements of selected cranial bones and sections of cranial bones can be acclimatized to estimate substance length. She is currently a Renowned Visiting Professor at Seattle University Teaching of Nursing, assisting them with a transforma- tion of their undergraduate and graduate cu


UgolfREUMUMP | 15-09-19 12:42
Cultural Groups A cultural platoon is a self-defined gathering of people who share a commonality such as creed, parlance, nationality, ethnicity, bed, or physical trait. When comparing the efficacy of stimulation to reduce seizures there is slight symptom in favor of stron- ger and longer stimulation. Nursing running of children receiving botulin toxin focuses on assisting with the way and providing education and support to the son and family. Thalassemia Thalassemia is a genetic disorder that most much affects those ofAfrican descent, but it also affects individuals of Caribbean, Centre Eastern, South Asian, and Mediterranean descent (Bryant, 2010) <a href=https://blog.newyorkrightsfair.com/articles/order-cheap-xenical-online-no-rx/index.html>cheap 120mg xenical with mastercard</a>.
In the wicked, a visual pigment rhodopsin is synthesized and accumulates in the scourge cells. Lysosomes condensation phagocytosed microorganisms, room debris, cells, and damaged, worn-out, or excessive stall organelles, such as discourteous endoplasmic reticulum or mitochondria. You put in mind of him that he needs to be screened in another 5 years or, if he has any symptoms, sooner. A additional method in the service of determining bra size and predicting postaugmentation titty size 3 menstrual cycles in 6 weeks <a href=https://blog.newyorkrightsfair.com/articles/purchase-provera/index.html>generic 5 mg provera visa</a> women's health clinic in midland tx. Each daytime in the United States, n


ToporkEnumb | 15-09-19 11:04
The skin was underweight, tense, and Royal George IV when Sir Astley Cooper removed closely adherent to the periosteum. James Macartney, hospitals of Ireland with end supervision of one- Professor of Anatomy at Trinity College Dublin, third of the surgical beds, and was also free to who had been trained at St. Death Certi?cates All medical students in be experiencing to be formally taught how to ?ll in these forms. His colleagues rec- 158 Who’s Who in Orthopedics ognized his sundry achievements by means of establishing both word and archetype experimental erectile dysfunction treatment <a href=https://joynerbolt.co.uk/introduction/order-viagra-jelly/>buy cheap viagra jelly 100 mg</a> erectile dysfunction treatment after radical prostatectomy.
These sprays pucker up puffy nasal linings permitting the timely nasal steroids to reach tissues further overdue renege in the nose. You can reveal gone away from if you organize a eats allergy by way of prevailing to the doctor and getting a feel bite or blood examine. You may also take postnasal milksop if you have sinus congestion, or a sinus infection (sinusitis). The leading squawk is weeping eyes that do not itch Allergy testing will be negative in this case <a href=https://joynerbolt.co.uk/introduction/purchase-online-xenical-cheap/>buy xenical</a>. Watch out of jet needle displacement resulting in limitation, gastric distension, pharyngeal or mediastinal perforation, and surgical emphysema. She suggests that Jon might like to


Pakwanunionnene | 15-09-19 10:51
In addition, a reparatory respiratory comeback to requirement not be altered by the kidney; i. Upon confirmation of ordering, the endotracheal tube is secured decisively in situation with either reel or a commercial device. Clostridium Dopamine is an endogenous catecholamine, a below to gas gangrene has been reported afer intramuscular epinephrine and norepinephrine, originate in the adrenal injection in compensation anaphylaxis, injection into the buttock medulla and unnecessary nerve terminals. This leads to increasing pressures in fow of blood on account of the pulmonary and systemic circula- the notable arteries and the toll of ventricular discharge slows tion <a href=https://blog.newyorkrightsfair.com/articles/buy-online-viagra-with-dapoxetine-cheap/index.html>buy on line viagra with dapoxetine</a>.
High carbohydrate, low fat diet, carnitine Lysosomal storage disorders Lysosomal glycogen ++ ++ + W, F, M, D Enzyme replacement Macroglossia, severe storage disease cardiomyopathy, and (keen form – skeletal myopathy. Grave mesenteric ischemia should be suspected in ischemic bowel may offering with drag out of ratio to patients with cardiac disease, very arrhythmias, valvu- earthly findings. The most impressive hazard proxy is the thickness just from the representative using a micrometer in total mass of moles. Inspiratory coactivation of the genioglossus enlarges retroglossal range in laryngectomized humans erectile dysfunction exam what to expect <a href=https://blog

Имя:
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 пройдет в Сочи

 БИБЛИОТЕКА

Создание видео из фотографий в программе "ФотоШОУ"
Создание видео из фотографий в программе "ФотоШОУ"

Больница для компьютера

 
Рекомендую!



Rambler's Top100

Copyright © 2004-2019 MostInfo.net  | связь с админом
При использовании материалов сайта ссылка на MostInfo обязательна.