MySQL - Problem mit DELETE
hattrix
- datenbank
Hallo,
ich habe ein Link:
<a href="?name='.$name.'">Benutzer löschen</a>
Dies habe ich dann nach klicken in folgendes SQL eingefügt.
$sql="DELETE FROM benutzer WHERE user='".$_GET[name]."'";
Soweit funktioniert dies. Aber hat ein Nutzer ein Namen, wie z.B. Halke#23, erscheint folgende:
$sql="DELETE FROM benutzer WHERE user='Halke'";
Warum bricht der vor dem Rautezeichen ab?
Da per Get-Parameter übergebene Werte auch Anker vermuten. Ein Link mit dem Anhang #23 wird auf den Anker mit dem Namen 23 verweisen. Du musst das Rautenzeichen also vorher maskieren.
Außerdem solltest du auch deine Nutzereingaben überprüfen.
Da per Get-Parameter übergebene Werte auch Anker vermuten. Ein Link mit dem Anhang #23 wird auf den Anker mit dem Namen 23 verweisen. Du musst das Rautenzeichen also vorher maskieren.
Außerdem solltest du auch deine Nutzereingaben überprüfen.
Also mit replace maskieren?
Außerdem solltest du auch deine Nutzereingaben überprüfen.
Also mit replace maskieren?
Für die Umwandlung unerwünschter Sonderzeichen: urlencode.
Um SQL-Injections zu verhindern: mysql_real_escape_string
Siechfred
hat ein Nutzer ein Namen, wie z.B. Halke#23, erscheint folgende:
$sql="DELETE FROM benutzer WHERE user='Halke'";
Warum bricht der vor dem Rautezeichen ab?
Weil die Raute innerhalb einer URL den Parameterteil beendet und den Anker einleitet, weshalb in folgendem Beispiel:
http://www.example.de/my_cool_script.php?user=devil#666
der Parameterteil "user=devil" und der dokumentinterne Anker "666" heißt. Maskiere die Raute (IIRC "%23") und alles wird gut.
Siechfred