Avatar billede JJ77 Juniormester
15. november 2006 - 18:02 Der er 3 kommentarer og
1 løsning

Kan ikke finde indhold i db med specieltegn i søgning

Jeg har nedenstående kode som jeg bruger til at søge i en database. Det virker helt fint normalt, men kan bare ikke søge på specieltegn som æ, ø og å. Tegnene står normalt i databasen og burde derfor vel kunne findes som fx æ, og ikke ae osv...

Kan se at den konverterer specieltegnene fra søgeordsfeltet til nogle mærkelige tegn når jeg trykker på søg.

Koden kan du se nedenfor.


<input type="text" name="search" size="20">



if(!isset($_GET['selectName']) || $_GET['selectName']=="") {
    $g_total = mysql_query("select count(id) as total from koebAfProdukt
    WHERE gruppe LIKE '%".$_GET['gruppe']."%' AND (produkt LIKE '%".$_GET['search']."%' OR supplerendeTekst LIKE '%".$_GET['search']."%')") or die(mysql_error());                                               
} else {
    $g_total = mysql_query("select count(id) as total from koebAfProdukt
    WHERE gruppe LIKE '%".$_GET['gruppe']."%' AND (produkt LIKE '%".$_GET['search']."%' OR supplerendeTekst LIKE '%".$_GET['search']."%')
    AND koebAfProdukt.postNr BETWEEN LEFT('".$_GET['selectName']."',4) AND RIGHT('".$_GET['selectName']."',4)
    AND kategori LIKE '%".$_GET['selectKategori']."%'") or die(mysql_error());
Avatar billede tdafoobar Nybegynder
15. november 2006 - 19:02 #1
a) din kode er hamrende usikker og kan bruges til SQL injections
b) www.php.net/urlencode , php.net/urldecode

c) www.php.net/mysql_real_escape_string , til at afhjælpe SQL injections :p
Avatar billede JJ77 Juniormester
15. november 2006 - 19:23 #2
hmm.. kan jeg ikke logge dig til at vise hvordan koden så skal se ud:-)

Troede desuden ikke at man kunne lave sql injections når det kun er en select query.
Avatar billede JJ77 Juniormester
15. november 2006 - 19:41 #3
Er dette bedre, og sikret mod sql injections?

if(!isset($_GET['selectName']) || $_GET['selectName']=="") {
    $g_total = mysql_query("select count(id) as total from koebAfProdukt
    WHERE gruppe LIKE '%".mysql_real_escape_string($_GET['gruppe'])."%' AND (produkt LIKE '%".mysql_real_escape_string($_GET['search'])."%' OR supplerendeTekst LIKE '%".mysql_real_escape_string($_GET['search'])."%')") or die(mysql_error());                                               
} else {
    $g_total = mysql_query("select count(id) as total from koebAfProdukt
    WHERE gruppe LIKE '%".mysql_real_escape_string($_GET['gruppe'])."%' AND (produkt LIKE '%".mysql_real_escape_string($_GET['search'])."%' OR supplerendeTekst LIKE '%".mysql_real_escape_string($_GET['search'])."%')
    AND koebAfProdukt.postNr BETWEEN LEFT('".mysql_real_escape_string($_GET['selectName'])."',4) AND RIGHT('".mysql_real_escape_string($_GET['selectName'])."',4)
    AND kategori LIKE '%".mysql_real_escape_string($_GET['selectKategori'])."%'") or die(mysql_error());
}
Avatar billede JJ77 Juniormester
16. november 2006 - 15:51 #4
Nåå.. men dette tog vist en drejning.. prøver at oprette det på ny til lidt flere point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester