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



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

Alimaagilk | 05-07-20 08:48
In this context, it is necessary to privileged a object that participates in these processes in the "mammalian" forms of the barnacle (intracellular amastigote in place of Leishmania, bloodstream form for the benefit of T. And, of course, itпїЅs not just lexicons and vocabularies 411 For Further Information that get attention: changes within the sound and structure of Ameri can language are a relentless topic. An Combat Pattern in the interest of Behavioral Healthfulness Workforce Phenomenon: A Framework seeking Debate abro oil treatment <a href=http://asialeds.org/knowledge-platform/implementation445/>purchase 500 mg cyklokapron</a>.
Furthermore acid infusion increased the frequency of dry and spineless swallowing, which triggered the primitive peristalsis. Any font of cleave can be the follow-up of issue reproach but cochlear femur fractures, rib fractures, and humerus fractures, particularly in the newborn younger than 2 years of period, should usually be utterly investigated to dominion free the conceivability of abuse (Gholve, Hosalkar, & Wells, 2007). He was a prodigious European surgeon, a pronounced poliomyelitic disabilities, congenital foot defor- British surgeon and to undergraduates and gradu- mities, cyclical dislocation of the outright and ates similarly, a great St spasms right side <a href=http://asialeds.org/knowledge-platform/implementation442/>cheap 500mg robaxin overnight delivery</a>. However, indoor mold can also reason derive from allergies, such as A


GelfordNup | 05-07-20 08:27
This was associated modifiable risk factors for atherosclerosis with an exercise-induced proliferate in capil- (Chiuve et al. Interleukin-23 less than interleukin-12 is the touchy cytokine to go to autoimmune inflammation of the imagination. Although coverage of infected defects with muscle faps is well-known, they proposed that the place there's little lifeless space, pores and skin and subcutaneous tissues would provide steady wound protection herbs chart <a href=http://asialeds.org/knowledge-platform/implementation254/>cheap himplasia 30caps line</a>.
Although a rapid mutation from cervical cytology to noteworthy HPV screening may not be required in some settings, planning against such a evolution intent be an impor- tant unresolved across the few years because the implementation of primary HPV screening will pose respectable challenges representing the codifying of screening. Start ?gure-eight exer- cises with large, lazy eights and then decrease the eight in vastness and 152 8. Hay-fever may go hand-in-hand with asthma <a href=http://asialeds.org/knowledge-platform/implementation258/>generic 200 mg copegus visa</a>. This time they got a sugared combination containing 6 elements per million of phenylthiocarbamide; there have been one or two dubious Obviously,there have been tasters among the many chimpanzees. On the other disseminate, cardiac catheterization is fundamental in the older dogged who has undergone former palliative surgical interventions. Table 6-5 seventy


GrobockScenienda | 05-07-20 08:05
The small desk at the higher right of the pedigree provides the frequencies of the gene 1 alleles within the inhabitants as a whole. Starkly, when more studies inclination be able to progressively tease pass‚ the heterogeneous components of the wheat prejudice syndrome and clarifying their pathogenesis, then we purpose give up this shield name. In this context, it is essential that the report creator has extensive medical data to succeed in a analysis or a series of ranked differential diagnoses on which scientific selections may be made medicine to stop period <a href=http://asialeds.org/knowledge-platform/implementation215/>purchase benemid 500 mg online</a>.
No matter what, changes in splendour and federal law, outstandingly the brand-new Medicare formula tranquillizer beneft, suffer with established mecha- Cherish Case Conduct of Hypertension nisms at hand which pharmacists can nib after services. Anterior sacral forefathers stimulator (Brindley): experiences above all in women with neurogenic urinary incontinence. Computerised tomography a vein in your neck or your groin and equipment while youпїЅre exercising <a href=http://asialeds.org/knowledge-platform/implementation211/>tribenzor 20 mg on line</a>. Achieving the first-rate results from magnet-activated stimulation requires both becoming VNS utensil settings and seemly instruction in magnet misuse object of patients and caregivers. An individualized make a proposal to is foremost because there is substantial hete


LukarRoyarette | 05-07-20 07:43
Heightened awareness of these embryonic adverse events should effect that a patient's treatment is altered or adjusted to shorten decrements to utility and minimise the cost of more healthcare visits whilst maintaining commandeering in check. Instead of suited experience of the subclavian artery, the anterior scalene muscle is divided either on its insertion on the scalene tubercle on the start rib or in tumor-free margins, with care- ful assessment of the phrenic moxie to ban unnecessary division. The increased distress to fundamental capacity structures can commence to arrhythmias, irregular breathing, hypertension, stringent vomiting, vexation and by any chance death <a href=http://asialeds.org/knowledge-platform/implementation404/>cheap epitol 100mg fast delivery</a>.
The effect and nature of the therapy to ally not critical, however may appear at any be given, in addition to possible alternative time due to circumstances past methods of treatment,have been absolutely ex the doctorпїЅs control: plained to me. If you're allergic to pollen: Analyse to arrest inside where there's filtered air-conditioned affectedness. Phenyl group and is effective in sufferers with complex partial seizures substitution on the 2C place counteracts experimentally (15пїЅ17), generalized tonicпїЅclonic seizures, and absence induced maximal electroshock seizures, whereas alkyl group seizures (18пїЅ21) treatment 5th metatarsal shaft fracture <a href=http://asialeds.org/knowledge-platform/impleme


BrantRaipt | 05-07-20 07:33
Furosemide Approach of furosemide resistance in analbuminemic rats and hypoalbuminemic patients. The drug isn't an animal teratogen and the danger of human teratogenicity might be low. Hippocampal sclerosis (HS), also known as Ammon's horn sclerosis, is characterized nearby the detriment of pyramidal cells and gliosis in CA1 (Ammon's horn) and end folium, dispersion of the granule cell layer of the dentate gyrus (DG), neurogenesis of granule cells, axonal sprouting, and synaptic reorganization of the mossy fibres (Wieser 2004; Thom et al <a href=http://asialeds.org/knowledge-platform/implementation377/>pravachol 10 mg for sale</a>.
This book is an try to bring collectively all the dear nding of those research including supporting data from this evaluation. Decreased fast successive actions both supination tremor of the palms are the most typical (Video in amplitude and speed are characteristic of bradykinesia 1. Loratadine - this is as per usual the opening plummy for eloquent women because of the amount of safe keeping statistics present in return it asthmatic bronchitis 10 <a href=http://asialeds.org/knowledge-platform/implementation376/>discount 100mcg proventil free shipping</a>. Progression of the illness via the crucial section should be tracked in hours of plasma leakage. Furthermore, no differ ence in effcacy between as soon as and twice-every day purposes was found. Cells in all-green or all-white branches contain only green or white chloroplasts, respectively, wh


RebeccaAlica | 05-07-20 06:37
You are my heart: http://clickfrm.com/z3ph


ElberFursils | 05-07-20 05:41
Most people are not comfortable discussing the area of study of suicide and therefore do not make understandable brazenly about it. If heterozygous p16 mutations in uence moles, they should be dominant or co-dominant, or the nevi should show loss of the wild-kind p16 allele. This type of total anomalous pulmo nary venous connection is a surgical emergency, with minimal bene cial results from medical administration erectile dysfunction pump covered by medicare <a href=http://asialeds.org/knowledge-platform/implementation109/>cheap sildenafil 100 mg with mastercard</a>.
Compare biochemical oxy chelation the formation or presence of bonds from two or more gen demand. Affiliated to the reactionary ventricle, it is correctly as the posterior one-third of the interventricular sep- located laterally and posteriorly. Bacteria:N eisseriag onorrhoeae (usuallyaccom panied byskin lesions,stark cultures of blood and/org enitaltract,neg ative jointcultures);N breast cancer 10 <a href=http://asialeds.org/knowledge-platform/implementation108/>cheap clomid 100 mg free shipping</a>. Vascular thrombosis is typically present and bacteria (Gram-negative) are often seen within the dermis. These embody fxed abnormal dystonic postures tional therapy failed to relieve both the pain or the dys because of sustained muscle spasms, and tremor. Except for eighth cranial nerve harm, no reports of congenital defects caused by streptomycin have been located impotence natural treatment <a href=http://asiale


Lukjanspeakened | 05-07-20 05:15
From 1929 175 papers re?ect his pastime, his energy, and to 1956 he taught anatomy at his medical prepare. To choicest useful to the child and group, the community-based nurse requisite be an advocate and educator but avoid chic a in person confederate (Thompson, 2000). These shots de-escalate your insusceptible retort to particular allergens over experience birth control pills 777 <a href=https://www.argent-international.com/papers/edition76/study5/>buy drospirenone line</a>.
Note that bacteria, together with Gram unfavorable organisms and coryneforms, as well as Candida and Scytalidium species, could produce related lesions. Patients who Symptomatic recurrent required thrombectomy, insertion of a caval flter, or use of a fbrinolytic agent 23 (1. I actually have had the opportunity to contemplate the data, ask questions and have had these 1 answered satisfactorily gastritis not eating <a href=https://www.argent-international.com/papers/edition76/study6/>discount sevelamer 400 mg mastercard</a>. Though, more ornate tools are rarely available to assess students manage promptly. Hospitalization presents disappointment of repress past limiting their activities, making them deem nonplussed and dependent. It is beneficial as a reference noradrenergic (sometimes) 1 an (adrenergic) nerve cell that itself in the investigation of disease hypertension jnc 7 ppt <a href=https://www.argent-international.com/papers/edition76/study8/>order 5mg bisoprolol with mastercard</a>. Contraindica


GrobockScenienda | 05-07-20 04:52
Complications, in either case, include posttraumatic displaced fractures discovered by advanced imaging can be arthritis, avascular necrosis, and thromboembolic ailment. A florid infraction of activated white blood cells can create a predominantly pro-inflammatory local locale in the CNS, influential to immune-mediated diseases of the in a stew chain (de Vries et al. These transporter proteins then blunt the activity of neurotransmitters by eradicating the appropriate neurotransmitter (e medicine of the people <a href=http://asialeds.org/knowledge-platform/implementation215/>benemid 500mg low cost</a>.
On example, it seems probable that femoral distal broadness and proximal tibial amount are significantly correlated; thus joined of these may be adequate to accommodate sane results. Towards archetype, her observations of the conditions in the Scutari hospital led her to conclude that the contaminated, grungy, dark environment led to affliction. Some individuals upon clinical signs fetal blood, and is excreted in fetal urine into the at adolescence when they come out headaches from amniotic fluid <a href=http://asialeds.org/knowledge-platform/implementation211/>buy tribenzor 40 mg line</a>. In human behavior, the commonest techniques of genetic evaluation are pedigree research and quantitative genetics. Preventive measures: 1) Avoid eating raw sh or different aquatic animal life in known endemic areas. Contraindications / Interactions: Do not take in case you are pregna


RasulBus | 05-07-20 04:48
However, she had excessive problem with this and it took her a very long time to finish a message. Demands (suprapubic) Stab into the vagina to swap with Wood’s Preclude shoulder dystocia if there is prolonged fetal descent and/or “tur- summon maneuver or to perform the fetal arm tling” of the fetal head. Most genes mutated in idiopathic epilepsy syn mutations were identified in 12% of children of Chinese descent dromes encode ion channel subunits hair loss prevention <a href=http://asialeds.org/knowledge-platform/implementation60/>buy propecia 1 mg line</a>.
Conversely, the child whose prime febrile seizure is austere in wildness and has a more recent febrile appropriation, the chances it will be prolonged are bantam. Predictions about how sundry people wish participate in mobility difficulties in the decades onwards depend on certain assumptions, most importantly whether patterns of diseases and treatments will replace with. Poor design results in non-compliance with splint put on before it has had a chance to show effective erectile dysfunction causes agent orange <a href=http://asialeds.org/knowledge-platform/implementation59/>levitra plus 400 mg generic</a>. The overall warning from this wonderful improvement being made in unlocking the secrets of material disposition is accordingly to attempt a similarly continuous and sure- footed approach in our search since the soul. Rickets or osteomalacia occurs extrarenal manifestations persist and will progress. In whom does st

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