Databáze - úvod
Níže je uveden pouze náhled materiálu. Kliknutím na tlačítko 'Stáhnout soubor' stáhnete kompletní formátovaný materiál ve formátu PDF.
dotazy pro
manipulaci s DB vrací mysqli_query() hodnotu typu
boolean.
Zpracování výsledku z mysqli_query
Mnoho funkcí na zpracování $result
mysqli_fetch_array — Fetch a result row as an associative, a
numeric array, or both
mysqli_fetch_assoc — Fetch a result row as an associative array
mysqli_fetch_field_direct — Fetch meta-data for a single field
mysqli_fetch_field — Returns the next field in the result set
mysqli_fetch_fields — Returns an array of objects representing
mysqli_fetch_fields — Returns an array of objects representing
the fields in a result set
mysqli_fetch_lengths — Returns the lengths of the columns of
the current row in the result set
mysqli_fetch_object — Returns the current row of a result set as
an object
mysqli_fetch_row — Get a result row as an enumerated array
SQL injection
Často sestavujeme dotaz z parametrů zadaných
uživatelem.
Musíme počítat s tím, že uživatel nemusí zadat
"pěkná" data.
Uživatel může zničit sql dotaz.
Uživatel může pozměnit dotaz tak, že vrátí jiný
výsledek.
SQL Injection
zkuste url:
sql_injection.php?max=aaa
// sestavim sql dotaz z $_GET parametru
// predpokladam, ze uzivatel
ve formulari zadal max cenu zbozi
// parametr max
// spatne sestaveny sql dotaz
$sql_spatne = "SELECT * FROM zbozi WHERE Cena <=
$sql_spatne = "SELECT * FROM zbozi WHERE Cena <=
".$_GET['max']." ORDER BY Nazev";
$cena_max = intval($_GET['max']);$sql_spravne = "SELECT * FROM zbozi WHERE Cena <= ".$cena_max."
ORDER BY Nazev";
echo htmlspecialchars("Spatne: ".$sql_spatne);echo "<br/>";echo htmlspecialchars("Spravne: ".$sql_spravne);echo "<br/>";
SQL Injection
zkuste URL:
sql_injection.php?search=dd'%20OR%20true%20OR%20Nazev%20like%
20'%
// predpokladam, ze uzivatel zadal vyhledavaci retezec nazvu
// param search
// rekneme, ze v systemu jsou dve role: 1: admin, 2: obyc
uzivatel
$sql_spatne2 = "SELECT * FROM zbozi WHERE Priv = 2 AND Nazev