Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
billy
Člen
Avatar
billy:4.3.2015 0:20

Cau, tak jsem to zkusil takhle, je to odolne vuci MySQL injection?

$id = 1;

$dsn = 'mysql:dbname=ne­co;host=local­host';
$user = 'user';
$password = 'heslo';

try {
$dbh = new PDO($dsn, $user, $password);
} catch (PDOException $e) {
echo 'Spojeni selhalo' . $e->getMessage();
}
$dbh->exec("use tab"); // tohle asi neni treba...

do {
$stmt = $dbh->prepare("SELECT * FROM tab WHERE id='$id'");
$stmt->execute();
$stmt->setfetchmode(PDO::FET­CH_ASSOC);

while($row = $stmt->fetch()) {

if ($id == $id) {

$idv[$id] = $row['id'];
echo htmlspecialchar­s($idv[$id]);
echo "<BR>";
$url[$id] = $row['url'];
echo htmlspecialchar­s($url[$id]);
echo "<BR>";
$len[$id] = $row['len'];
echo htmlspecialchar­s($len);
echo "<BR>";
$nam[$id] = $row['nam'];
echo htmlspecialchar­s($nam[$id]);
echo "<BR>";
$im[$id] = $row['im'];
echo htmlspecialchar­s($im[$id]);
echo "<BR><BR>";

};

}
$id++;
} while ($id<=10);
$dbh = null; // Odpojeni od DB

 
Odpovědět
4.3.2015 0:20
Avatar
billy
Člen
Avatar
billy:4.3.2015 1:01

htmlspecialchars(); bych asi takhle nemel pouzivat => pouze jako soucast html kodu?

 
Nahoru Odpovědět
4.3.2015 1:01
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá na billy
Jan Lupčík:4.3.2015 6:09

Příště použij tlačítko code, prosím. Takhle se to luštit nedá.

Nahoru Odpovědět
4.3.2015 6:09
TruckersMP vývojář
Avatar
Odpovídá na billy
Neaktivní uživatel:4.3.2015 8:53

No tak to teda není. Konkrétně v tomto místě

$stmt = $dbh->prepare("SELECT * FROM tab WHERE id='$id'");

Zadáváš tam proměnnou $id přímo!
Místo toho použij

$stmt = $dbh->prepare("SELECT * FROM tab WHERE id=?", array($id));

A přečti si tutoriály, které tu máme, je to tam vysvětlené.

Akceptované řešení
+5 Zkušeností
Řešení problému
Nahoru Odpovědět
4.3.2015 8:53
Neaktivní uživatelský účet
Avatar
billy
Člen
Avatar
Odpovídá na Neaktivní uživatel
billy:4.3.2015 13:10

jo diky, PDO mi absolutne nic nerika. Tohle jsem dal dohromady narychlo vcera s pomoci internetu, takze samozdrejme neznam souvislosti.

No opravil jsem to takhle, funguje to. Na ty tutorialy se mrknu.

<code>
$stmt = $dbh->prepare("SELECT * FROM tab WHERE id=?", array($id));
$stmt->execute(arra­y($id));
</code>

 
Nahoru Odpovědět
4.3.2015 13:10
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 5 zpráv z 5.