PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : SQL-Injection verhindern



bockionline
07-11-2003, 15:49
Hallo,

ich bin dabei, in PHP ein Newssystem zu programmieren. Die Daten liegen in einer MySQL-Datenbank.

Ich übergebe nun an eine Seite per GET die News-ID, deren Nachricht angezeigt werden soll.

Wie kann ich prüfen, ob der übergebene String wirklich eine Integer-Zahl ist? Denn wenn da SQL-Anfragen übergeben würden, hätte ich den Fall der SQL-Injection.

Ich habe in der PHP-FAQ folgenden Code gefunden:

function sqlsafeint($param)
{
return (NULL === $param ? "NULL" : intVal ($param));
} Nur leider verstehe ich die Funktion nicht, da ich noch PHP-Anfänger bin...

Wenn mir jemand einen Hinweis geben könnte, was da abläuft, wäre das großartig :)

Vielen Dank,
bockionline

sixfriends
10-11-2003, 22:43
Wenn ich das richtig sehe, dann gibt die Funktion zurück
(1) NULL, wenn der übergebene Parameter NULL war
(2) den Integer Wert von dem Ding, sonst

Was du suchst, ist wohl eher sowas wie

if (is_Integer($variable)) {...}

Ich hoffe mal, dass das klappt, hab es nicht ausprobiert. Wenn du mehr über den Ausdruck in der Funktion wissen willst, dann such mal nach "Trinärer Bedingungsoperator"

sixfriends

offe
11-11-2003, 20:18
> return (NULL === $param ? "NULL" : intVal ($param));

intval_--_Konvertiert einen Wert nach integer


$eins ? $zwei : $drei

Wenn der Wert des ersten Sub-Ausdruckes (hier: $eins) wahr ist (d. h. nicht NULL), dann wird der Wert des zweiten Subausdrucks (hier: $zwei) zurückgeben. Andernfalls (d. h. wenn der erste Ausdruck falsch ist), wird der Wert des dritten Subausdruckes (hier: $drei) zurückgeben.

Offe

bockionline
11-11-2003, 20:26
Hi,

vielen Dank für eure Antworten, damit habt ihr mir sehr geholfen!

MfG
bockionline