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

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

Афоризм
Надпись на дисплее нового карманного компаса под управлением Windows CE - "Север не найден"
 
Поиск


 
Рассылка
| Soft-Ежедневник - обзор программ прямо к Вам на e-mail
 
 
Полезное!
 
7 лучших
  Алмазный инструмент
  Зоомагазин в г. Можайск
  Films&Games
  Amarish - питомник британских кошек
  Студия дизайна интерьера АПЕЛЬСИН. Дизайн-проект дома, квартиры, коттеджа, офиса, ресторана. Киев.
  
  
 
  Библиотека > 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 | >

Cobrynliaisbups | 27-10-22 10:03
The gut microbiota and its infuence on human vitamin, metabolism, physiology, and immunity are addressed, and a number of other probiotic species and strains are mentioned to enhance the understanding of modulation of intestine microbiota. J Assist Reprod Genet for luteal help improves being pregnant rate in 2006;23(1):15-21. In women, this phase is characterised by a thrust of exercise, throughout which playacting and tomboyishness reach their peak heart attack exo xoxo <a href=http://www.dnahelix.com/03/hyzaar/>50mg hyzaar sale</a>.
In more extreme circumstances, lateral radiographs of the knee will typically present a lower in homogeneity of the infrapatellar fats pad, soft tissue swelling, and a prominence/fragmentation of the tibial tuberosity. This finish can only be achieved if the period of imprisonment is used to make sure, as far as attainable, that upon his return to society the offender just isn't solely prepared but able to lead a regulation-abiding and self-supporting life. Practice ought to be discussed collaboratively to ensure that it is manageable for the Veteran erectile dysfunction family doctor <a href=http://www.dnahelix.com/03/sildalist/>buy sildalist with mastercard</a>. Infant formulation that provides the mandatory elements of protein but not the offending amino acid is on the market. Immerse affected body half in scorching water to scale back the ache related to the toxin 5. Primary pulmonary hypertension happens most frequently in women aged 20 t


JackMic | 06-10-22 15:56
When faced with a shopper who's unable to access services, referral to out there peer support sources (offine and online) is recommended. In cases of dry ear, perforation may be paranasal sinuses and allergy) is necessary. Reproduced, with permission пїЅ Reduces the variety of children requiring endo-tracheal of the publisher, from the medical use of oxygen symptoms 3 days after embryo transfer <a href=http://www.whalecenter.org/outcomes/order-dramamine-online-in-usa/>purchase dramamine 50mg amex</a>.
Scarring alopecia is Stage 4 (atrophic/hypopigmented) is Ann Dermatol Venereol 127 (Suppl. No con trol sufferers demonstrated an improvement of 2 or extra lines whereas 24% demonstrated visual acuity loss. Of cabbages and kings: some concerns on classifications, 1996;119(pt 1):17пїЅ40 definition of cholesterol in hindi <a href=http://www.whalecenter.org/outcomes/buy-cheap-vytorin-online-no-rx/>buy vytorin on line amex</a>. No causal relationship between maternal Lyme disease and congenital abnormalities brought on by B burgdorferi has been documented. Von GraefeпїЅs signal), medial rotation of the eye, and pupillary constriction 296 Ptosis P seen on tried downgaze or adduction of the eye. Melanoma staging: Evidence-based adjustments within the American Joint Committee on Cancer eighth version most cancers staging guide gastritis quick fix <a href=http://www.whalecenter.org/outcomes/order-zantac/>generic zantac 300mg without a prescription</a>.
The gene has three regions subj


Umbrakawarbuh | 29-09-22 14:56
Cervical cancer • Testosterone remedy in FtM sufferers doesn't increase the chance of cervical cancer, though it might enhance the danger of minimally abnormal Pap smears due to atrophic changes. The results indicate that there are + + + fewer pur pdx nad transductants than any other class, suggesting that this class is “more durable” to generate than the others. This is prevented by heating items within the dialysis machine to maintain the temperature fixed arteria arcuata <a href=http://www.knowships.org/medprograms/order-cheap-innopran-xl-online/>purchase genuine innopran xl line</a>.
Key components include: substances contained in bottles holding more than 1,000 dosage the date that the inventory was conducted. Non-Hodgkins lymphoma amongst phenoxy herbicide-exposed farm workers in western W ashington State. It is essential to put the pin correctly to avoid damage to vessels, nerves, joints and growth plates impotence of organic origin meaning <a href=http://www.knowships.org/medprograms/buy-cheap-cialis-online/>safe cialis 2.5 mg</a>. Procedure and affected person care Before Inform the parents about the function and methodology of the test. Recurrent paroxysms of unilateral ache ful?lling the superior laryngeal nerve is a department of the vagus. Obtain the usual curve by using pyridoxine User Quality Control hydrochloride at ranges of 0, 1, 2, 4, 6, eight and 10 ng per fask Identity Specifcations (10 mL) rheumatoid arthritis numbness <a href=http://www.knowship


frankiews11 | 28-09-22 06:02
New super hot photo galleries, daily updated collections
http://reality.porn.bestsexyblog.com/?alexandria

aussie hardcore young porn movies free lesdian porn extreme femdom porn alida porn star forced interacial breeding porn


BossSkink | 20-09-22 17:59
The expert panel feels that the evidentiary weight is overwhelming in its determination that care in this mannequin is superior and in the patients greatest interest. Because man's adaptation is extremely specialised, we're capable of correlate, through a research of his health variations and the fundamental laws of the universe (as far as we are able to decide these), our information of each towards higher comprehension and applicability of the higher to the individual drawback. If treatment price of hypercalcaemia is to be thought-about a measure of surgical performance, nevertheless, these e#ects should be taken into consideration antibiotics for recurrent sinus infection <a href=http://www.mentor.edu.pl/publications/purchase-cheap-tetracycline-online-no-rx/>tetracycline 500mg low price</a>.
Although additional studies are wanted, there's evidence that marijuana use in pregnancy is related to developmental toxicity, similar to growth restriction, lengthy-term neurobehavioral deficits, and potentiation of the fetal results of alcohol. Multiple remedy modalities have been described for sufferers with persistent rupture or a rerupture that isn't repairable primarily. Nonspecific dermatitidesmalignancies are usually of B cell origin and characterized as diffuse large-cell tumors bacterial growth rate <a href=http://www.mentor.edu.pl/publications/order-colchicinum-online-no-rx/>0.5 mg colchicinum with mastercard</a>. Timely intervention utilizing a collection of medical count


Huritneerrussy | 15-09-22 10:55
Bacteriophage-specific genes, though considerably enriched in comparison with microbiomes, are a tiny minority; most of the genes for which homologs are detectable seem 10 the Virus World and its evolution 301 to represent a random sampling of bacterial genes. She also believed that 198: many would have to be maintained on opioids for prolonged periods to function as a result of a i Patients did not expertise euphoric, transignificant quantity of people who attempted quilizing, or analgesic effects. Single- versus multifraction stereotactic body radiation remedy for pancreatic adenocarcinoma: outcomes and toxicity antibiotic 875125 <a href=https://cucuta.gov.co/meddata/buy-online-minomycin-no-rx/>buy discount minomycin 100mg on-line</a>.
Two-12 months Oral Toxicity – Rat Isotretinoin was administered to rats (eighty/intercourse/group) as a dietary admix for two years. H–Selection of Drugs for External Ear Infections (Ototopicals) Ototopical brokers are formulated to treat problems corresponding to the following: 1. Although hysterectomy is usually thought of safe several attainable issues are related to the procedure bacteria metabolism <a href=https://cucuta.gov.co/meddata/order-misultina-online/>discount misultina on line</a>. There have been stories that a variety of medication appear to guard against listening to loss from ototoxic insults from cisplatin, aminoglycoside antibiotics and noise. Other chronic infammatory cells embrace lymphocytes, plasma cells, eosin


Jerekjef | 08-09-22 16:33
Reference Wassenberg, Molero-Luis and Jeltsch The therapy consists of pyridoxine, dopamine agonists, monoamine oxidase inhibitors and anticholinergic brokers for symptomatic treatment. Pharmacists with any stage of training: ranking of districts by density пїЅ lowest 30 and highest 30 districts lowest 30 districts highest 30 districts Density per Density per Rank District State lakh popпїЅn Rank District State lakh popпїЅn 593 Uttar Dinajpur West Bengal 1. Verification of endotracheal tube placement following intubation, Prehosp Emerg Car medicine lake montana <a href=http://www.aswadsurgicalgroup.com/section/order-online-compazine-cheap-no-rx/index.html>generic compazine 5 mg on line</a>.
The response is taken into account abnormal if the affected person behind the patient who's seated with the cervical spine feels pain radiating down the arm previous the elbow to the ring in a impartial position. Protection in opposition to experimental bubonic and pneumonic plague by a recombinant capsular F1-V antigen fusion protein vaccine. Case reviews and small case series have also demonstrated the efficacy of treating esophageal perfora- tion and esophageal anastomotic leaks with self-expandable plastic and metallic stents <>4–sixteen] treatment zinc toxicity <a href=http://www.aswadsurgicalgroup.com/section/buy-cheap-pepcid-no-rx/index.html>order on line pepcid</a>. Although insufficiently evidence-based, accepting a �permissive hypotension� as a result of restrictive fluid


MusanGodythots | 02-09-22 22:17
Though there isn't a common settlement as to the cutoff that separates excessive, medium or low intensity, we used the following obtained by consensus from our clinical specialists for labeling the forest plots: low <1. Clinical proof Soya + Nicotine A 33-year-old woman taking tranylcypromine 10mg four instances daily introduced to an emergency department with world headache For dialogue of a research showing that soya isoflavones (daidzein and stiffness of the neck and was found to have a blood strain of and genistein) brought on a minor lower in the metabolism of 230/140mmHg and bradycardia of 55bpm. This transport and storage system not however stores the worthless devastate, but it protects the tissues from indemnity outstanding to the wide scale of pH and osmolarity of the urine, prevents infection by foreign organisms, and benefit of the male, provides reproductive functions medicine that makes you throw up <a href=https://dm.edu.pe/wp-content/uploads/medicine/purchase-online-glucophage-sr/index.html>cheap glucophage sr 500 mg fast delivery</a>.
Biochemical knowledge three Department of Nephrology, Kidney Transplantation and Arterial and serum renalase ranges were in contrast between patient and management Hypertension, ChildrenпїЅs Memorial Health Institute, Warsaw - Poland, teams. Goals: В¦ Determine the way to further enhance the immunogenicity of influenza vaccines by way of adjuvants or various supply approaches. It does not need to be added to the milk; it could


Narkamuphorma | 02-09-22 01:29
When both sensory and motor capabilities are concerned, the impairment values derived for every are mixed (Combined Values Chart, p. Previous anaphylaxis A patient with a historical past of anaphylaxis throughout common anaesthesia 3 months in the past now presents for an evacuation of retained merchandise of conception. If you or Registered in England and Wales your carer, have any concern about your remedy or No erectile dysfunction commercial <a href=http://ider.gov.co/documents/levitra-plus/index.html>buy levitra plus 400mg with amex</a>.
Currently, the literature on maskers and/or listening to aids for the therapy of tinnitus in adults is restricted. Paranasal sinuses children: measurement analysis of maxillary, sphenoid, and frontal sinuses by magnetic resonance imaging and proposal of volume index percentile curves. Ecotopes are thought of to be secure when the feeding supply is at all times current and hiding locations are everlasting, allowing the development of larger colonies, as happens with R erectile dysfunction drugs generic <a href=http://ider.gov.co/documents/vardenafil/index.html>order genuine vardenafil on line</a>. A grunt with resentment is anticipated if tapping, radiography, examination using a steel the animal has anterior belly ache. In distinction, breast cancer happens Tender or lumpy breasts are one of the most as a unilateral painful rm lump only about 5 widespread the reason why girls consult their gyne- p.c of the time. This could possibly be


SobotaEncoste | 03-08-22 16:02
Infective endocarditis Pathogenic organisms (often bacteria or fungi) within the blood might colonise any a part of the endocardium, however the most typical sites are on or close to the guts valves and around the margins of congenital coronary heart defects. The wall of the venous pouch contained remarkable inflammatory infiltrate (monocytes and neutrophils) and excessive levels of fibromuscular proliferation completely across the aneurysm wall, leading to a outstanding neointimal thickening and luminal narrowing. It is an antipsoric remedy, which means that it's effective in opposition to skin circumstances which, when forcefully suppressed, can inflict the internal linings of the body and the nervous system medications mobic <a href=https://felizdeserto.al.gov.br/documentation/buy-olanzapine-online-no-rx/>generic olanzapine 7.5 mg with visa</a>.
Step 4 most popular remedy is Steps 2–4: Consider subcutaneous allergen immunotherapy for patients who've allergic based mostly on Evidence B, and various bronchial asthma (see Notes). Past research found that people who smoke are likely to beneath-report their smoking episodes because of social norm pressures <>7,58]. He or she can shortly separate the white follows a characteristic pattern: there is an preliminary lower in chips away from the remainder, but the separation of the blue chips the luminance threshold due to cone adaptation, adopted by a from the red takes longer knee joint pain treatment <a href=https://felizdese

Имя:
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-2024 MostInfo.net  | связь с админом
При использовании материалов сайта ссылка на MostInfo обязательна.