28. maj 2011 - 10:45Der er
7 kommentarer og 1 løsning
Problemer med if / else filtrering af dataudtræk fra MySQL db.
Hej
Jeg forsøger at lave en filtrering af et MySQL udtræk ved hjælp af 3 if / else. De første 2 virker fint, men den tredje virker ikke som den skal, da den tager mere end bedrooms=1 med eksempelvis bedrooms=2 og bedrooms=3. Meningen er, at den kun skal lave udtræk, hvor bedroom=1.
Hvad gør jeg forkert, og er der en bedre/smartere måde at lave filtreringen på
På side 1 har jeg disse filtreringsparametre:
<? $_SESSION['filter_1'] = "Apartment for Rent"; $_SESSION['filter_2'] = "Villa for Rent"; $_SESSION['filter_3'] = 1; ?>
På side 2 forsøger jeg mig med følgende script (har bare taget det væsentlige med, da scriptet virker så langt at første 2 if/else filtrerer fint, mens tredje tager mere end 1 bedroom med):
Nu kører det uden if / else, og hvor jeg blot bruger denne:
$sqlCommand = "SELECT * FROM propertyinfo WHERE (property_type='$filter_1' || property_type='$filter_2') && bedrooms='$filter_3' ORDER BY prop_price_sort ASC";
Typisk vil disse sessionvariable bare blive sat af dig selv, så det er ikke SÅ farligt. Men tænk hvis nogen læste dette og brugte $_GET[] eller $_POST[] i deres kode ... så åbner de for sql injection (google dette) angreb.
Hvis jeg forstår dig rigtigt, så er det en rigtig god idé eller måske nærmere en nødvendighed, at jeg ændre alle mine kald af sessioner til det du skriver f.eks.
hvis du har tænkt dig at putte dine variabler ind i et sql-script, skal du først escape dem. Hvis de ikke skal i et sql-script, er der måske andre ting du bøær ha i tankerne.
Er der for eksempel ting jeg skriver ind på dit site som kan ses af andre? så skal du escape html i det før du skriver det ud til dem. For eksempel bliver html escapet her på sitet (sådan at <script>alert("!");</script> ikke bliver kørt for dig).
Synes godt om
Ny brugerNybegynder
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.