ugrás a tartalomhoz

php mysql

csman007 · 2010. Feb. 25. (Cs), 23.38
Sziasztok!
A véleményeteket szeretném kikérni az alábbi kódról. Annyit kel tudni róla, hogy 7 drop down boxból frissülnek az adatok, és jelenleg ezt találtam ki. Ha esetleg tud valaki olyat ami miatt nem ajánlja kérem jelezze.
  1. $gyarto = $_GET["gyarto"];  
  2. $katalog = $_GET["katalog"];  
  3. $termek = $_GET["termek"];  
  4. $anyag = $_GET["anyag"];  
  5. $szin = $_GET["szin"];  
  6. $style = $_GET["style"];  
  7. $minta = $_GET["minta"];  
  8.   
  9.    if ($gyarto != 'összes') {         
  10.     $gy = " t_gyarto = '$gyarto' AND";        
  11. }  
  12.   
  13. if ($katalog != 'összes') {       
  14.     $k = " t_katalog = '$katalog' AND";  
  15.       
  16. }  
  17. if ($termek != 'összes') {        
  18.     $ter = " t_tipus = '$termek' AND";    
  19. }  
  20.   
  21. if ($anyag != 'összes'){  
  22.       
  23.     $any = " t_anyag = '$anyag' AND" ;  
  24. }  
  25.   
  26. if ($szin != 'összes') {          
  27.     $sz = " t_szin ='$szin' AND";         
  28. }  
  29.   
  30. if ($style != 'összes') {         
  31.     $stilus = " t_stilus = '$style' AND";         
  32. }  
  33.   
  34. if ($minta != 'összes') {         
  35.     $mint = " t_minta = '$minta'   ";//+3 space a levágás miatt       
  36. }  
  37.   
  38. $all = $gy.$k.$ter.$any.$sz.$stilus.$mint;  
  39. $rest = substr($all, 0, -3);//leveszi a string utolsó 3 karakterét  
  40.          
  41.         if ($gyarto == 'összes' && $katalog == 'összes' && $termek == 'összes'   
  42. amp;& $anyag == 'összes' && $szin == 'összes' && $style == 'összes' && $minta == 'összes'){   
  43.      $sql ="SELECT * FROM termek ORDER BY t_id";                  
  44. }  
  45.   
  46. else {  
  47.  $sql ="SELECT * FROM termek WHERE ".$rest." ORDER BY t_id ";  
  48. }  
Előre is köszönettel Csman
 
1

SQL Injection

Poetro · 2010. Feb. 26. (P), 03.38
SOSE használj fel felhasználótól érkező adatot előfeldolgozás nélkül, amennyiben például MySQL lekérdezésben használod, előtte használd a mysql_real_escape_string függvényt.
  1. $gyarto = $_GET["gyarto"];    
  2. $katalog = $_GET["katalog"];    
  3. $termek = $_GET["termek"];    
  4. $anyag = $_GET["anyag"];    
  5. $szin = $_GET["szin"];    
  6. $style = $_GET["style"];    
  7. $minta = $_GET["minta"];  
  8.   
  9. $elemek = array(  
  10.   't_gyarto'  => $gyarto,  
  11.   't_katalog' => $katalog,  
  12.   't_tipus'   => $termek,  
  13.   't_anyag'   => $anyag,  
  14.   't_szin'    => $szin,  
  15.   't_stilus'  => $style,  
  16.   't_minta'   => $minta,  
  17. );  
  18. $feltetelek = array();  
  19. foreach ($elemek as $kulcs => $elem) {  
  20.   if ($elem != 'összes') {  
  21.     $feltetelek[] = "$kulcs = '" . mysql_real_escape_string($elem) . "'";  
  22.   }  
  23. }  
  24. if (emptyempty($feltetelek)) {  
  25.   $sql ="SELECT * FROM termek ORDER BY t_id";  
  26. }  
  27. else {  
  28.   $feltetel = implode(' AND '$feltetelek);  
  29.   $sql ="SELECT * FROM termek WHERE $feltetel ORDER BY t_id";  
  30. }  
2

isset

bh · 2010. Feb. 26. (P), 12.16
Érdemes még a $_GET dolgait megvizsgálni, hogy egyáltalán bejött-e olyan kulcsú tömbérték.
3

mindig

csman007 · 2010. Feb. 26. (P), 12.49
Mindig kapsz értéket, mert select boxokból ajax által frissül az adat. Azért vizsgáljuk az 'összes't mindig mert a select boxnak ez az alapértéke, és ilyenkor mindent látsz.