Be lehet állítani valahogy mysql select-nél, hogyha üres adatot kap, akkor ne keressen?
Tehát ha üres értéket kap, akkor egyszerűen azt ne vegye figyelembe.
$sql= "select * from data where vezeteknev = '$vezeteknev' and keresztnev = '$keresztnev'";
(a változók angolul vannak, csak beírtam valamit)
Tehát, hogyha a változó üres amit kap, akkor ne keressen az adatbázis megfelelő sorában.
Tehát, ha a $vezeteknev üres, akkor el se indítsa a keresést. Ezt meg lehet valahogy csinálni?
Bármit meg lehet, de ezt nem a queryben kéne.
Az sql-t összefűzni meg mint stringet baromi elavult, használj paramétereket.
Ezt php-ben vizsgáld meg, nem beállítás kérdése. Sok esetben az is információ, ha az egyik mező üres.
Pl. skype neve: ''. Tök értelmes keresés az is, hogy a skypenélküli emberekre keresel a db-ben.
Az sql-t összefűzni meg mint stringet baromi elavult, használj paramétereket.
Ezzel most semmit nem mondtál. Mi az a paraméter, hol kéne használnom?
Arra gondol, hogy ha simán az SQL stringbe pakolod a paramétereket és nem használsz pl PDO-t, akkor nagyon könnyen sebezhető kódot fogsz írni. Paraméterezéssel viszont ez kivédhető, mert ott pl "Select data from table where column = ?" és a ? helyére kerül majd az adat, de már megtisztítva.
SQL injection sebezhetőségről hallottál már? A $vezeteknev és $keresztnev változókat megtisztítod használat előtt? Ugye nem közvetlen a felhasználói imput megy bele.
Mi van, ha valaki pl vezetéknévhez azt írja be, hogy ' 1=1; drop table data; --
Akkor, ha nincs megtisztítva, bizony lelövi az adatbázistábládat!
google("sql parameter");
Nem olyan nehéz kitalálni.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!