Vinzenz Mai: Daten in eingabefelder klappen nicht

Beitrag lesen

Hallo,

So ich will aber nun wenn ich in den Eingabefeldern zb den Namen ändere auf Speichern klicke, dass er das auch in die Datenbank speichert macht er aber nicht. Hier der Code

if(isset($submit)) // Der Submitbutton ist schon da

Woher denn? Ebenfalls mit dem überflüssigen und gefährlichen Umkopieren oder weil Du auf (hoffentlich nicht mehr) vorhandenes register_globals = on setzt?

{

$Anrede=$_POST['Anrede'];
$Name=$_POST['Name'];
$Vorname=$_POST['Vorname'];
$Email=$_POST['EMail'];
$ID=$_POST['Personalnr'];

Überflüssiges und gefährliches Umkopieren. Die Herkunft der Daten wird verschleiert. Weg damit!

Hier der MySQL Befehl:

$update= "Update tabelle SET Anrede ='$Anrede', Name = '$Name',
Vorname = '$Vorname', EMail = '$Email',
Personalnr = '$ID' WHERE Personalnr`= '$ID' ";

Ja klar. Völlig fehlerhaft. Offen für SQL-Injektion. Unfähig mit Namen wie O'Brien umgehen zu können - es sei denn, man verläßt sich auf das veraltete (und dämliche) PHP-Feature Magic Quotes.

Wenn man noch auf die veralteten mysql_*-Funktionen setzt, dann sollte man

a) ermitteln, ob die Magic Quotes aktiviert sind.
   Wenn ja, deren Auswirkungen rückgängig machen.
   (und zwar ein einziges Mal, gleich zu Skriptbeginn), damit ab PHP 6, wenn
   es dieses Feature nicht mehr gibt, das Skript leicht anzupassen ist.

b) Beim Zusammensetzen der SQL-Anweisung mysql_real_escape_string auf die
   Eingabedaten anwenden.

Besser wäre es, auf mysqli und Prepared Statements umzusteigen.

Freundliche Grüße

Vinzenz