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

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

Афоризм
Прежде чем сказать "Гоп", посмотри, во что ты впрыгнул.
 
Поиск


 
Рассылка
| Soft-Ежедневник - обзор программ прямо к Вам на e-mail
 
 
Полезное!
 
7 лучших
  Форум о заработке в интернет
  Сервисный центр
  Мр3 портал
  Центр GPS ГЛОНАСС навигации и мониторинга - НавиЦентр
  Зоомагазин в г. Можайск
  
  
 
  Библиотека > 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 | >

Basirvak | 03-05-22 23:26
Stay on the scene with the person until he or she is fully conscious and aware the individual has multiple seizures with no signs of of the surroundings. Cachectic sufferers show increased expenditure of resting energy; in distinction, in chronic starvation, the basal metabolic price is decreased. Medical practitioners stress the significance of listing behaviours that may be noticed and measured antibiotic hand soap <a href=https://hmpi.org/material/order-keftab-online/>375 mg keftab</a>.
Resource use in mixed treatment was the sum of resource use of treatment and behavioural remedy, given that the two interventions are led by various kinds of healthcare professionals and no overlap in services provided occurs. Knowing the subtype of the patient’s illness may help the doctor to evaluate how rapidly the disease might progress. In sufferers with schizophrenia, there was no indication of any completely different tolerability of olanzapine within the aged compared to younger sufferers medicine pouch <a href=https://hmpi.org/material/order-cheap-kytril-no-rx/>buy kytril paypal</a>. A mother ought to drink water, buttermilk, house-made soups, soya milk sattu and different unsweetened healthy beverages as an alternative of soda or fruit juices. This consists of the usage of interpreter services the place essential • Ensuring knowledgeable consent is obtained prior to delivering care • Meeting all legislative necessities and professional standards • Applying commonplace pr


Yokianalteway | 29-04-22 04:05
So in style was milk thistle that a tincture of the entire plant was listed in the first United States Homeopathic 1,2 Pharmacopoeia. Criteria Since the choice that a medical emergency existed could be a matter of subjective medical judgment involving the whole gamut of illness and accident situations, it's inconceivable to provide arbitrary guidelines. The threshold for tactile, vibration, and kinesthetic sensibility could also be increased or regular bacteria 4 result in fecalysis <a href=https://ibusausa.com/collection/purchase-cheap-tridosil-no-rx/>buy tridosil line</a>.
The пїЅ Headache is a common opposed impact of this drug, significantly really helpful dose is one to two tablets thrice per day, although when first starting remedy. The entire coronary heart could be imaged with three mm non-overlapping slices, inside one breath hold (30 sec). These toxicities are may be just as variable in Safety examine with surprising ocular results gastritis celiac <a href=https://ibusausa.com/collection/order-ditropan/>discount ditropan amex</a>. Safety administration methods became obligatory in January 2009 for plane operators (1). Though the prevalence of sort 1 diabetes is in- mediated (generally) or it might be idiopathic destruc- creasing all around the world, yet it accounts for a minority. This can be carried out from 15 weeks to During labour, your cervix will dilate (open up) to test for sure chromosomal and genetic 10cm to let your child transfer from your uterus issue


Trompokhit | 25-04-22 00:00
Vaginal Insufflations with Ozone/Oxygen Mixtures Vaginal insufflations are accomplished with ozone focus 0f 2-2,5mg/l in ozone/oxygen mixtures with the gasoline rate 0, 5-1l/min for 5-10 minutes. The perinatal dioxin publicity of infants was estimated by the measurement of dioxin ranges in breast milk of the nursing mothers. Patients with feeding setting, nevertheless, there is concern for use of blended-fiber formulation intolerance had been proven to have the next fee of bacteremia in patients at high threat for bowel ischemia or extreme dysmotility (86% vs 18%; P < infection hemorrhoids <a href=https://franjipaniresort.com/training/order-cheap-cipro/>order discount cipro on-line</a>.
Oral thrush is a white coating on onerous or taste bud and tongue; causes dysphagia if oesophagus concerned; happens in late disease. Recommend injectable B12 for patients with more extreme deficiency or those that might not take in it as a result of diarrhea, vomiting, or bowel resection. Dexamethasone is often given in divided doses, though some authorities favor a single day by day dose birth control low estrogen <a href=https://franjipaniresort.com/training/purchase-cheap-yasmin-online-no-rx/>buy generic yasmin online</a>. Prospective analysis of two medical scores for acute bronchial asthma in kids 18 months to 7 years of age. Contact Dermatitis 41:one hundred ninety–192 methodology to evaluate prevention of irritant combination 250. Venn diagrams comparing the proteins present in eve


AnktosFauck | 21-04-22 03:28
The evidence also means that there are techniques and processes in place inside healthcare provision that may additionally negatively have an effect on entry to healthcare, for example rigid referral proce-dures and care pathways that don't account for individual variation in tradition, poor communication between services and an absence of quality mental healthcare companies. Trial of and insufficient response or intolerance to hydroxyurea, unless contraindicated or clinically significant antagonistic results are experienced Reauthorization 1. With any median nerve harm, there may be potential for loss of sensation in the median nerve distribution, which includes the palmar floor of the thumb, the index fin- ger, the lengthy finger, and the radial facet of the ring finger medicine to treat uti <a href=https://esehospitalalcidesjimenez.gov.co/wpdocs/purchase-divalproex/>discount divalproex 250mg mastercard</a>.
Pancreatic divisum A congenital anomaly in the anatomy of the ducts of the pancreas in which a single pancreatic duct isn't formed, but rather stays as two distinct dorsal and ventral ducts. Transmission Mode Comment: Pneumonic plague more than likely to occur if used as a organic weapon, but some cases of bubonic and first septicemia may also occur. However, when symptoms rise to a peak , they break throughthe it appears that in lots of of these instances, prolonged remedy antidepressant barrierto the purpose where they cause diswith excessive-dosage monotherapy may


SvenDioms | 06-04-22 19:34
Postures seen when the patient is mendacity down: which can erode on the vertebra within the supine a. Less than 1% of complete physique calcium is found in soft tissues (~7 g) and physique fluids (~1 g). Identify the ilio-inguinal nerve and defend it throughout surgery by holding it away from the operating field symptoms after flu shot <a href=http://www.merced-river.org/special-course/buy-online-norpace-no-rx/>cheap norpace online</a>.
Applications of skeletal anchorage in remedy of adults have been mentioned in detail in Chapter 18. By doing so, each contraction is triggered and due to this fact managed by a guide action. J Acquir Immune Defic Syndr Human Retrovirol 2001 27 fifty six sixty two Test mentioned subsequent to group is the preliminary take a look at the ones mentioned beneath an anion are confirmatory tests for it clinical depression symptoms quiz <a href=http://www.merced-river.org/special-course/order-escitalopram-online/>purchase escitalopram with american express</a>. The willpower of dif- neutropenia is the patient’s preliminary episode of fever and neutro- ferences in affected person threat of an infection and infectious issues penia, or persistent unexplained fever of their preliminary episode ranges (excessive danger and low risk) during the period of neutropenia (after 4–7 days) or a subsequent episode of fever and neutrope- has been recognized and additional validated since this clinical nia (recurrent) (robust, low). Doppler examination reveals


EsielFesLayexy | 06-04-22 19:09
These pores and skin lesions ing papules with a central eschar (ecthyma gangrenosum like may be discrete or multiple, are found preferentially between lesion). In principle, stem cells An inevitable and essential a part of this derived from a person could present an individ- research involves the use of animals. Hepatology 2010 ; fifty one : ingestion of Herbalife contaminated with Bacillus subtilis muscle relaxant apo 10 <a href=http://www.merced-river.org/special-course/buy-azathioprine/>discount azathioprine amex</a>.
Note: We cowl outpatient mental health and substance use dysfunction companies or supplies provided and billed by residential therapy centers at the levels proven right here. Chem icals Analyte/InternalStandard Purchasedfrom 2 a H -6 25-hydroxyvitaminD3(95%) Synthetica b 25-hydroxyvitaminD3(ninety eight%) Sigma-Aldrich 2 c H -6 all-transretinol(ninety nine. It is the Pregnancy carries an overall maternal mortality contraceptive of selection acne 17 year old male <a href=http://www.merced-river.org/special-course/order-benzac-online-in-usa/>discount benzac 20gr with visa</a>. Study reports use of morcellation or en bloc elimination of the uterus or uterine fibroid. Fullness of optic nerve with nerve fiber layer opacity may be replaced by coalescing refractile excrescences 6. Cytokines During acute pancreatitis, some inflammatory cells and pancreatic tissues launch inflammatory mediators and cytokines, which influence the whole means of inflammation gastritis


Triincefact | 06-04-22 07:21
noclegi pracownicze nieopodal suwalk <a href="https://www.pokojeiaugustow.online">www.pokojeiaugustow.online</a>
stx21


FordNeods | 03-04-22 08:44
The improvement of the guidelines was carried out underneath the auspices of the Division of Non-communicable Diseases. Considerations this affected person has diffuse atherosclerotic vascular disease, including coronary artery illness, carotid illness, and peripheral vascular illness. In exams done on laboratory animals, researchers repeatedly stimulate the In brainпїЅs temporal lobe exams carried out on with electricity over a laboratory animals, the period of many days heart attack young man <a href=https://www.buc.edu.eg/medpractice/calan/>order calan 240 mg visa</a>.
Relative to their much less happy of пїЅJim,пїЅ college students who had comparatively greater optimistic have an effect on have been friends, joyful individuals also report having stronger social assist extra likely to agree with optimistic inferences from the narrative (Matikka & Ojanen, in press), attending club conferences more fre. Figure 6 depicts our current information about lineage relationships of hepatocytes throughout embryogenesis and adult life. These changes would in the end be associated to growth of insulin resistance, liver steatosis and decline in muscle perform by way of train intolerance, amongst other vital consequences erectile dysfunction treatment brisbane <a href=https://www.buc.edu.eg/medpractice/cialis-black/>purchase cialis black in india</a>. Mice had been divided into totally different experimental groups at random when tumors reached a particular dimension. Overlap of refux


KapotthDrige | 25-03-22 12:50
Try Choose whole grain merchandise everytime you fruit that is ready to eat like apples, bananas can. In addition a supervisory institution that may help if any problems arise, ought to be named (for example the Director of a analysis division). If in your arms and feet but need the quantity of lean muscle mass to stroll, you would take some lost has been very vital, it’s strolling poles or go together with a pal venice arrhythmia 2013 <a href=https://www.aislesociety.com/mdocs/micardis/>20 mg micardis with visa</a>.
One who witnessed them says: Her changes would hardly waken a sleeping youngster. Patients with cardiac dis- Marked limitation of strange Patient can perform to com- Moderately compromised. There is proof that in World War I, German agents inoculated horses and cattle with anthrax and glanders at the Port of Baltimore before the animals have been shipped to France skin care for rosacea <a href=https://www.aislesociety.com/mdocs/benzoyl/>cheap 20 gr benzoyl otc</a>. For instance, there may be the hazard of labelling someone 'hypertensive' although the only problem is the affected person's use of a decongestant on the time. If it appears that the pri- Te habits of a tumor is the best way it acts within the mary website is not lymph nodes, unknown major body. Lingering high resting pulse pressures can degrade the centre, wisdom, and kidneys, and justification medical treatment erectile dysfunction code red 7 <a href=https://www.aislesociety.com/mdocs/vimax/>disc


Randallinantee | 18-03-22 07:32
Most of the patients who current for remedy even have tonic-clonic seizures and many have absence seizures. Lowering the dose of the drug, and B- classic pemphigus, cicatricial pemphigoid, bullous complicated vitamin administration. Two kinds of notices are required, those that should be given before the move, referred to as pre-transfer notices, and those that may be given within a short period of time after the move, referred to as post-move notices hypogonadism erectile dysfunction and type 2 diabetes mellitus <a href=http://www.mycenae-excavations.org/network/buy-cheap-vimax/>order 30 caps vimax mastercard</a>.
As Ahr activation is usually thought of necessary, however not suffcient, to induce ad- verse biological responses, and the doseпїЅresponse relationship for Ahr activation is generally quite steep, the relevance of excessive-dose rodent research corresponding to these to human пїЅlow-dose exposuresпїЅ isn't always clear. An abstract published in 2000 described the outcomes of a research involving 34 pregnant girls treated with protease inhibitors (none with amprenavir) compared with forty one controls that evaluated the affiliation with diabetes (four). Ricin can be prepared in liquid or crystalline form, or it may be lyophilized to make a dry powder cholesterol levels by age chart <a href=http://www.mycenae-excavations.org/network/order-online-atorlip-20/>atorlip-20 20 mg lowest price</a>. Systemic options are granulomatous synovitis, corticosteroid-responsivehe

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