Hast du dir den Wikipedia-Artikel zur
SQL Injection wenigstens mal angeguckt?
Kann es sein, dass $links_safety nur Zahlen erhalten soll? Denn dann heißt es:
Dies verhindert effektiv eine SQL-Injection, da hier geguckt wird, ob hier eine Zahl vorliegt. Wenn ja, dann wird auch eine Zahl zurückgegben. Wenn nicht oder einfach nichts übergeben wurde, wird 0 zurückgegeben. Also auch eine Zahl.
Einen KB-Artikel haben wir zu der Funktion offenbar nicht, aber im phpBB Development Wiki ist ein schöner Artikel:
https://wiki.phpbb.com/Function.request_var (allerdings auf Englisch)
Du kannst, wenn du willst, dann auch bei den Zuweisungen zu
$links_change
die Anführungszeichen entfernen und nur die Zahlen dort stehen lassen.
Dann würde ich anstelle von
if($links_safety != "")
lieber
if (!empty($links_safety))
nehmen und bei der Zuweisung in der If-Bedingung ebenfalls die Anführungszeichen entfernen. Dieses Mal aus rein optischen Gründen.
Den SQL-Query kannst du nun so lassen, da wir nun sichergestellt haben, dass nur Zahlen vorkommen.
Allerdings muss davor noch ein
$result =
Ja ich weiß, eben bei der SQL-Query war das nicht. Ganz einfach, weil bei UPDATE nichts zurückkommt. Bei SELECT sollte aber was zurückkommen, deswegen muss da das
$result
davor.
Doch die While-Schleife ist ebenfalls falsch.
$row
ist ein Array. Die beiden Zeilen müssen also lauten:
Hast du das eigentlich mal laufen lassen, denn dann sollte die Fehlermeldung kommen, dass er das Semikolon nach der geschweiften Klammer nicht mag. Das kommt soweit ich weiß auch nie nach geschweiften Klammern.
Mal ne generelle Frage: Basierend auf den Kommentaren könnte vielleicht das hier das richtige sein? => KB:quicklinks
Da entfällt das Programmieren sogar ganz.