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

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

Афоризм
А ваших pезидентов мы на пpеpываниях пеpевешаем!
 
Поиск


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

ZubenTwire | 26-08-21 02:16
Dose counting and the usage of pressurized metereddose inhalers: working on empty. Use code 95 when a constructive lymph node is aspirated and there are no surgically resected lymph nodes. Supporters of the Viral Hepatitis Action Plan are dedicated to ensuring that new instances of viral hepatitis are prevented and that persons who are already infected are tested; informed about their an infection; and supplied with excessive-quality counseling, care, and remedy <a href=https://gbgroupinc.com/wp-content/specialization/order-online-thyroxine/> medications online discount generic thyroxine uk</a>.
A typical Marfan Weill Marchesani syndrome continues to be un syndrome patient is tall, lean, with excessive sure. Drugs, chemicals and bodily agents which induce aplasia include hydrolases, elastase, myeloperoxidase, cathepsin-G, of the bone marrow trigger neutropenia. Evidence desk forblinded lactose intolerance treatmentstudies:Q uestion4 (continued) A uth or,Y ear, SubjectSelection, Study Design, Treatm ent- O utcom e DataSource,M eth ods Treatm ent-A ctive, Study Subject C ontrol, assessm ent/ Q uality ofth e to M easure O utcom es, A dh erence Sponsorsh ip, C h aracteristics A dh erence R esults and Study Inclusion/Exclusion Evaluations C ountry,L ength of Evaluations C onclusions C riteria F ollowup symptom buteasily tolerated);2=reasonable; three=extreme;and four=very extreme <a href=https://gbgroupinc.com/wp-content/specialization/buy-prinivil-online/> blood pressure chart


HamidNox | 25-08-21 07:37
Items that may be coated (see Schedule of Benefits for standards, restrictions, and limitations) embrace: examinations, x-rays, fillings, restorations, root canals (anterior teeth), extractions, some surgical procedures, general anesthesia, sedation, and dentures. The supermarket had closed, and John Cotton was within the car parking zone, walking toward his automobile, when a stranger approached him, carrying a bundle. Hauser Section B Epileptogenesis, Genetics, and Epilepsy Substrates Chapter 3 Experimental Models of Seizures and Mechanisms of Epileptogenesis 20 T <a href=https://gbgroupinc.com/wp-content/specialization/order-desloratadine-online-no-rx/> allergy shots everett clinic buy discount desloratadine line</a>.
Hematopoietic stem cell transplantation usually makes use of stem cells from the bone marrow or umbilical twine blood of a matched donor. Few of these scales are well Many ventilated pediatric sufferers require sedation and a few validated, particularly in populations of acutely sick children with analgesia while intubated. Clinical concerns and antagonistic events/side effects are not supposed to be inclusive of all data, however somewhat to spotlight a number of the key points <a href=https://gbgroupinc.com/wp-content/specialization/purchase-eurax/> skin care treatments 20 gm eurax</a>. Normally as a result of failure of the preliminary remedy, particularly with breastconserving therapies. The stool Kato-Katz check is widely used; performпїЅ praziquantel


MiltonGaw | 25-08-21 00:50
This is a unique place for fashionable women's clothing and accessories.
We offer our clients women's clothing, jewelry, cosmetics and health products, shoes, bags and much more.
https://fas.st/aLmjv


CarlosVof | 19-08-21 17:17
Encourage coughing, deep-respiration workouts, and frequent Promotes lung growth, mobilization, and drainage of position adjustments. The challenge well being activities, including advocatng fuoridation of comВ­ for dentist, therefore, is to look beyond the person dental munity water supplies, partcipating at school and commuВ­ ofce and make a broad evaluation of their community's nity well being promotion actions, advocating for physicians needs while assessing their very own position in enhancing the oral to be reimbursed fo r the application of fuoride varish for health of the complete community. A lower during which of the next more than likely promotes edema formation on this affected person? <a href=http://www.isrcg.org/recommendations/buy-meldonium-online-no-rx/> symptoms diverticulitis order cheapest meldonium and meldonium</a>.
Current standing and new developments in Peyronies illness: medical, minimally invasive and surgical remedy choices. Because there's a high incidence of subclinical neck illness, radiation doses between 50 and 60 Gy are used to electively deal with the neck. Detection of postnatal melancholy: Development of the ten-merchandise Edinburgh Postnatal Depression Scale <a href=http://www.isrcg.org/recommendations/order-alesse-online-no-rx/> birth control cramps alesse 0.18 mg with amex</a>. It ensures consistency of care among the giant number of clinicians in our Newborn Center and at multiple areas within the Houston space. For practical functio


GeorgBarbots | 18-06-21 08:53
Refer to Chapter physicians changing their follow, such that they three, Section 10 for an outline of potential not prescribe the beforehand accepted sources of bias. The number of glutamate residues current is involved in the regulation of folate-dependent metabolism. It is a strong hyperlink amongst micromaximum level of all samples of tea over monitored vitamins of crops, animals and humans and the absorption period <a href=http://currentsky.com/learning/course32/> erectile dysfunction vacuum pump price buy genuine vpxl online</a>.
Risk evaluation for and techniques to scale back perioperative pulmonary problems for patients undergoing noncardiac-thoracic surgery: A guideline from the American College of Physicians. B 6 An endometrial biopsy obtained with the resectoscope utilizing a cutting loop (Gynecare Versapoint , Ethicon Endo-Surgery Inc. Brown has type O blood according to the model what surface antigens does she have on her red blood cells four <a href=http://currentsky.com/learning/course40/> blood pressure medication during pregnancy purchase generic midamor from india</a>. Moreover, he looked very tall and strong and, due to this particular phenotype, his classmates incessantly mocked him, so he usually reacted aggressively. Answer is 4 Apley,s orthopedics 8th ed/ 230 Maheshwari essential orthopedics 2nd ed/51 (table 10. Inhalation publicity of male Fischer 344 rats for 4 hr to 3 aluminium flakes, at aluminium concentrations of 10, 50, 100, 200 or one thousand


Redgescant | 13-06-21 23:33
Lowest revenue group having low protective foods suffer type rickets and nutritional anemia. Bacteria and mycoplasmas are commonly concerned together in the pathogenesis of pneumonia in goats and sheep. Ocular Alignment in Infancy Ocular deviations through the first month of life do not essentially indicate an abnormality <a href=https://www.piramalcriticalcare.com/wp-content/medical-research/report702/> prostate yeast infection purchase penegra</a>.
Austria made no reservations to the Convention and the implementing legislation offers effective and beneficiant mechanisms for processing Hague Convention requests. In general, retinoic acid seems to in?u man melanocytes, it could possibly alter cell shape, suggesting that ence, in a focus-dependent manner, cell lineage retinoic acid could act on cytoskeleton proteins (397, 543). Some of the common ailments of titis can be caused by staphylococcal, otolaryngologist interest are described here <a href=https://www.piramalcriticalcare.com/wp-content/medical-research/report705/> pain treatment mayo clinic cheap 600mg motrin with mastercard</a>. In addition, long-time period studies have shown that the benefts of calcipotriene remedy had been maintained for up to one yr <eleven>15]. There ought to be education on the nature of melancholy and its therapy choices and will embrace the next: a. The third issue concerns the differentiation from a dysfunction secondary to extreme deafness or to some specific neurological or different str


Leifsum | 11-06-21 11:59
In this procedure, a nonabsorbable suture is positioned within the sclera 16 mm posterior to the limbus and adjoining to the lateral rectus muscle, incorporating one fourth of the transposed vertical rectus muscle. Cryoneurolysis for zygapophyseal joint ache: a multicenter, randomized, double-blind, sham-managed retrospective evaluation of 117 interventions. We use females from this colony as foster moms and as recipients of ovarian and embryo transplants <a href=https://davisislandspharmacy.com/wp-content/medical-professionals/purchase-phenazopyridine/> gastritis gi bleed order phenazopyridine without prescription</a>.
Presyncope is a sense of lightheadedness that is skilled in the setting of worldwide cerebral hypoperfusion. At current, appropriate timing of sperm collection remains unknown and can be variable among sufferers in accordance with their environmental background. Criteria have been established to set off required counseling and a system is in place to alert the 21% 31% 47% pharmacist of this need <a href=https://davisislandspharmacy.com/wp-content/medical-professionals/buy-olmesartan/> arteria zygomatico orbital buy olmesartan 40mg</a>. Ranjkesh F, Barekatain M, Akuchakian S: Bifrontal Houck P: Tranylcypromine versus imipramine in versus right unilateral and bitemporal electrocon anergic bipolar depression. This includes a subjective as well as goal take a look at of excellent reason, counting on the equal and certainly superior capability of women to make a


KliffHek | 10-06-21 21:58
Evaluation, Risk Stratification, and Management of Arrhythmogenic Cardiomyopathy channels,(280) which have several uncommon traits, such as activation on hyperpolarization, permeability to sodium and potassium ions, modulation by intracellular cyclic adenosine monophosphate, and a small single-channel conductance. Rhab considerable size and produce signs by merely domyomas may be surgically cured if the tumor is accessi obstructing mitral infow. Hemodialysis Isoniazid No change 300 mg once day by day, or 900 mg 3 occasions weekly Rifampin No change 600 mg as soon as every day, or 600 mg 3 instances weekly Pyrazinamide Yes 25 35 mg/kg per dose three times weekly (not every day) Ethambutol Yes 15 25 mg/kg per dose three instances weekly (not daily) Levofloxacin Yes 750 a thousand mg per dose 3 occasions weekly (not day by day) Cycloserine Yes 250 mg once every day, or 500 mg/dose three occasions weeklya Ethionamide No change 250 500 mg per dose every day p-Aminosalicylic acid No change 4 g per dose twice daily Streptomycin Yes 12 15 mg/kg per dose 2 or 3 instances weekly (not day by day) Capreomycin Yes 12 15 mg/kg per dose 2 or three times weekly (not daily) Kanamycin Yes 12 15 mg/kg per dose 2 or three occasions weekly (not day by day) Amikacin Yes 12 15 mg/kg per dose 2 or three occasions weekly (not every day) Note: Standard doses are given except there's intolerance <a href=https://davisislandspharmacy.com/wp-content/medical-professionals/buy-casodex-online-in-usa/> prosta


GamalBuifs | 06-06-21 09:10
On the opposite hand, it has been recognized that Similarly, higher calcium ranges in dialysates cardiac arrhythmia is more frequent in sufferers may be useful to sustain calcium balance when it being handled with lower-calcium dialysates. Of the books on adoption, seven were someone s own tales advised in first individual narrative. The case refects the choice-making pro- cess used in the diagnosis and therapy of a red, itchy eye <a href=http://musicfirstcoalition.org/wp-content/records/order-cheap-serpina-no-rx/> anxiety emoji buy serpina 60 caps otc</a>.
The head of each department stories directly to our Collection/Production Director. A 35year-old woman with anemia secondary to myelodysplastic syndrome developed a deep vein thrombosis (location and extent not specified) within the 18th week of being pregnant and was handled with unfractionated heparin. Challenge experiments carried out with human chorionic gonadotropin, gonadotropin-releasing hormone, or naloxone suggested that the decrease in serum testosterone was due to a lesion at the level of the testes <a href=http://musicfirstcoalition.org/wp-content/records/buy-cheap-ritonavir-online-no-rx/> medications you can take while pregnant generic 250mg ritonavir with mastercard</a>. The diagnostic work-up consists of medical and specic prosthesis must be made after in depth patient infor echocardiographic evaluation. Diferential Diagnosis The frst step in developing a diferential prognosis for a white patch (leukoplaki


HjalteHeilmrern | 05-06-21 10:58
Karvonen M, Viik-Kajander M, Moltchanova E, Libman I, LaPorte R, Maternal age at start and childhood sort 1 diabetes: a pooled evaluation of Tuomilehto J. The decision to give a blood transfusion to a patient with persistent anaemia is predicated on the patient's symptoms that indicate an absence of oxygen-transport capacity and a number of medical 108 Blood Transfusion Guideline, 2011 parameters such as affected person age, the pace at which the anaemia occurred, the cause of the anaemia, cardiac and/or pulmonary illness leading to decreased oxygen reserves and/or the flexibility to compensate for the shortage of oxygen transport capacity. Prophylactic therapy during immunosuppressive therapyProphylactic remedy throughout immunosuppressive remedy 1 depression vegetative symptoms <a href=https://www.fastmap.com/wp-content/laboratory-practice/order-bupron-sr/>buy bupron sr 150mg online</a>. Powered instrumentation utilizing a septoplasty bur may be helpful for the discount of bony spurs. There are still main hurdles to cross, nonetheless, like patents and proprietary rights of genes used, in addition to criticism by public interest groups just like the Rural Advancement Foundation International of Canada and others.
The most likely reason for this patient’s respiration difficulties is insufficient production of which of the next substances. Cause and danger elements There is not any easy causal relationship and genetic predisposition in not notably strong. Ammonia intoxica

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