Auge: Daten bei mysql_connect verschlüsseln

Beitrag lesen

Hallo

ich habe das Script nochmals überarbeitet und versucht alles, was du gestern noch als Verbesserung bzw. Korrektur angeführt hast, mit aufzunehmen/abzuändern.

<?php

if(empty($_POST["passwort"]) or empty($_POST["passwort2"]) or empty($_POST["username"] or empty($_POST["email"])
{
echo "Du hast leider nicht alle Felder richtig ausgefüllt. <a href="eintragen.html">Zurück</a>";
}
else
{
// ...
}

  
Abgesehen davon, dass die Prüfung auch die Gleichheit von `$_POST["passwort"]`{:.language-php} und `$_POST["passwort2"]`{:.language-php} enthalten sollte, ist es besser, an der Stelle nichts (per `echo`{:.language-php}) auszugeben sondern die Meldung in eine Variable zu schreiben. Einerseits folgt das dem schon von dedlfix mehrfach erwähnten und beschriebenen EVA-Prinzip, nachdem die Ausgabe allen Textes erst am Schluss erfolgt, andererseits müsstest du, so, wie du es tust, die Verarbeitung mitten im HTML-Quelltext erfolgen lassen um die Fehlermeldung im HTMl-Dokument zu haben, was (im Quelltext) nicht gerade übersichtlich ist.  
  
Besser wäre also  
  
~~~php
  
<?php  
  
if(empty($_POST["passwort"]) or empty($_POST["passwort2"]) or empty($_POST["username"] or empty($_POST["email"])  
{  
$error = "Du hast leider nicht alle Felder ausgefüllt. <a href=\"eintragen.html\">Zurück</a>";  
} else {  
// Alle Felder ausgefüllt, weitere Verarbeitung  
// Daten für die Ausgabe werden samt HTML-Schnipseln in $output geschrieben.  
}  
?>  
[code lang=html]  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">  
<head>  
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />  
<title><?php echo $document['title']; ?></title>  
</head>  
<body>  
[code lang=php]<?php  
if (!empty($error))  
{  
echo '<div class="error"><p>'.$error.'</p></div>';  
} else {  
echo $output;  
}  
?>

</body>
</html>[/code][/code]

Ich habe das isset() durch deine Vorgaben ersetzt. Außerdem habe ich nun die Leer-Prüfung von der Inhalt-Prüfung getrennt und an den Anfang des Scripts gestellt. Weiß nicht, ob das einen Unterschied macht, aber es erschien mir irgendwie sinnvoller.

Ob die Daten falsch oder nicht ausgefüllt und übergeben werden, ist *für das Skript* "uninteressant". In beiden Fällen muss die Verarbeitung abgebrochen werden. Es ist aber dann sinnvoll, wenn du dem Benutzer für beide Fälle unterschiedliche Meldungen präsentieren willst. Für ihn ist es im Normalfall durchaus wichtig, zu wissen, ob er vergessen hat, ein Pflichtfeld auszufüllen oder ob er ein bestimmtes Feld falsch ausgefüllt hat.

Ich habe Alternativen eingefügt, wie man die Abfragen meinem Verständnis nach noch gestalten könnte. Allerdings weiß ich nicht, ob sie so richtig sind. Für die SELECT Abfrage mit COUNT(*) habe ich über Google keine Beispiele gefunden, an denen ich mich orientieren konnte.

Das Archiv dieses Forums gibt einiges her, wobei ich die Qualität der einzelnen Fundstellen nicht geprüft habe.

Ist die Eingabe der Variablen $passwort bei dem Befehl INSERT eigentlich korrekt? Bis gestern abend war ich felsenfest davon überzeugt, da ja einige Zeilen vorher dies hier kommt:

$passwort = md5($_POST["passwort"]);

  
Mit md5 wird ein [Hashwert](http://de.wikipedia.org/wiki/Hashwert) eines Strings (oder auch einer Datei) erzeugt. Der soll pro String/Datei jeweils eindeutig sein. Es gibt mehrere Methoden/Funktionen, um Hashwerte zu errechnen, unter anderem auch MD5.  
  
Der Vorteil im konkreten Fall ist, dass das Passwort \*nicht im Klartext\* in der Datenbank steht. \*Falls\* es dazu kommt, dass ein Unbefugter Zugriff auf die Datenbank bekommt, liegen ihm somit die Passwörter nicht im Klartext vor.  
  
Beachte: Bei späteren Logins wird das nun eingegebene Passwort gegen seinen hinterlegten MD5-Wert geprüft. Dazu muss es ebenfalls mit md5() behandelt werden, damit beide Werte (die momentane Eingabe und der bei der Registrierung gespeicherte Wert) zueinander passen.  
  
Tschö, Auge  

-- 
Verschiedene Glocken läuteten in der Stadt, und jede von ihnen vertrat eine ganz persönliche Meinung darüber, wann es Mitternacht war.  
Terry Pratchett, "Wachen! Wachen!"  
  
[Veranstaltungsdatenbank Vdb 0.3](http://termindbase.auge8472.de/)