AnetiX Posted May 19, 2003 Report Posted May 19, 2003 Problēma tāda ,ka man vaig meklēšanu savā lapā. Piem. es ievadu vārdu koks un viņš man izmet visus rakstus kur ir kaut vienc vārds koks.
maar Posted May 19, 2003 Report Posted May 19, 2003 ja tu izmanto datubāzi tad vienkāršāko meklēšanu ar vienu queriju: SELECT*FROM tabula WHERE lauks LIKE '%$search_text%'
jannis Posted May 19, 2003 Report Posted May 19, 2003 bet kaa iisti ir ar droshiibu? man skjiet ka tad var ievadiit, piem, %'; ....(kaut ko nelaagu)
RuncZ Posted May 20, 2003 Report Posted May 20, 2003 vai tad nau vienalga ko lietotājs tur ieraksta ?? izčakarēt datubāzes saturu jams tāpat nevar... sliktākajā gadījumā mysql's var izmest kādu erroru par neriktīgu kveriju, ko savukārt vajadzētu varēt novērst ar $search=addslashes($_GET['search_txt']); vai kaut kā tamlīdzīgi
maar Posted May 20, 2003 Report Posted May 20, 2003 man skjiet ka tad var ievadiit, piem, %'; ....(kaut ko nelaagu) ar % nodrošina to, lai atrastu ievadīto tekstu lielākā teksta gabalā. Lietotājs pats var ievadīt % un tadejadi dot vairākus vārdus
zoltar Posted May 20, 2003 Report Posted May 20, 2003 Par to %; Bija te daži gudrinieki meklēšanas parametram nepielika nekādu validācijas loģiku, a datubāze ta bija pāri pa gigabaitu un ievadot meklēšanas parametra laukā % serveris vienkārši aizgāja daunā! Pārbaudi vajag anyway!
maar Posted May 20, 2003 Report Posted May 20, 2003 meklēšanas parametram nepielika nekādu validācijas loģiku kā būtu ar kādu paraudziņu ?
Venom Posted May 20, 2003 Report Posted May 20, 2003 principā pietiktu ar ko līdzīgu: $_POST['src']=mysql_escape_string($_POST['src']); //sākumā ņemam nost spec.characters $_POST['src']=preg_replace('/(delete|create|alter|select)/i','',$_POST['src']); //ņemam ārā baisus vārdus $_POST['src']=str_replace(array('%',';','_'),'',$_POST['src']); //un spec mysql mekēšanas wildcardus //un ; ņemam nost, lai nevarētu terminēt selektu un ievadīt citu komandu
Venom Posted May 20, 2003 Report Posted May 20, 2003 Par to meklēšanu bez db. ir man viens saic (slang.x-zone.lv), kuru laika trūkuma dēļ vēl nevaru pārlikt uz mysql, tur tiek izmantota relācijas sistēma - pievienojot raxtu vai tmldz. attiecīgajā failā metās iekšā piem. timestamps, kur figurē arī attiecīga faila nosaukumā. piem 1453465980.raksts. Meklēšana notiek apm. šādi: function gt($file) //nolasa f-la saturu stringā { return join('',@file(trim($file).'.raksts')); } $articles=@file('article.saraksts'); $atrasts=array(); foreach($articles as $line) { if (substr_count(strtolower(gt($line)),$ko_meklee)) { $atrasts[]=trim($line); } } beigās tev ir arrajs ar atrastiem raxtiem
freak Posted January 2, 2005 Report Posted January 2, 2005 Un ko tad darīsim, ja vajadzēs sameklēt vārdu select vai delete? :)
bubu Posted January 2, 2005 Report Posted January 2, 2005 Un ko tad darīsim, ja vajadzēs sameklēt vārdu select vai delete? :) 12431[/snapback] Un kur tad ir problēma?
No0ne Posted August 26, 2011 Report Posted August 26, 2011 Un kur tad ir problēma? Topiks gan 6 arpus gadus vecs, bet tomēr skaidrībai.. Problēma ir tajā, ka Venom dotais kods pilnīgi nevajdzīgi samaina vārdus select, delete, alter utt uz neko, un līdz ar to searchā nekas neparādīsies.
marcis Posted August 27, 2011 Report Posted August 27, 2011 Liels paldies, ka pateici! Es vairāk kā 6 gadus nevarēju atrast problēmu
Recommended Posts