poison: Daten bei mysql_connect verschlüsseln

Beitrag lesen

Hi,

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 ausgefüllt. <a href=\"eintragen.html\">Zurück</a>";  
}  
else  
{  
  
  
//Alternative  
  
if(empty($_POST["passwort"])  
{  
echo "Du hast leider kein Passwort angegeben. <a href=\"eintragen.html\">Zurück</a>";  
}  
  
else if(empty($_POST["passwort2"])  
{  
echo "Du hast leider vergessen Dein Passwort erneut einzugeben. <a href=\"eintragen.html\">Zurück</a>";  
}  
  
else if(empty($_POST["username"])  
{  
echo "Du hast leider vergessen Deinen Benutzernamen anzugeben. <a href=\"eintragen.html\">Zurück</a>";  
}  
  
else if(empty($_POST["email"])  
{  
echo "Du hast leider vergessen Deine E-Mail-Adresse anzugeben. <a href=\"eintragen.html\">Zurück</a>";  
}  
else  
{  
  
//Alternative Ende  
  
  
  
if($_POST["passwort"] != $_POST["passwort2"])  
{  
echo "Deine Passwörter sind leider nicht identisch. <a href=\"eintragen.html\">Zurück</a>";  
}  
else  
{  
  
  
$verbindung = mysql_connect("localhost", "Benutzername" , "Passwort")  
  
if(!$verbindung)  
{  
echo "Leider ist ein Fehler bei der Registrierung aufgetreten.  
echo  Bitte sende mir zur Registrierung eine E-Mail:  
echo  <a href="mailto:mail@potionmaster.de">mail@potionmaster.de</a>";  
}  
else  
{  
  
  
mysql_select_db("homepage")  
  
  
if(!mysql_select_db("homepage"))  
{  
echo "Leider ist ein Fehler bei der Registrierung aufgetreten.  
echo  Bitte sende mir zur Registrierung eine E-Mail:  
echo  <a href="mailto:mail@potionmaster.de">mail@potionmaster.de</a>";  
}  
else  
}  
  
  
$passwort = md5($_POST["passwort"]);  
  
$result = mysql_query("SELECT id FROM login WHERE username= '" . mysql_real_escape_string($_POST["username"]) . "'");  
$menge = mysql_num_rows($result);  
  
  
//Alternative  
  
$result = mysql_query("SELECT COUNT ('id') FROM login WHERE username= '" . mysql_real_escape_string($_POST["username"]) . "'");  
$menge = mysql_fetch_row($result);  
  
// Alternative Ende  
  
  
  
if($menge == 0)  
{  
$eintrag = "INSERT INTO login (username, passwort, email) VALUES ('" . mysql_real_escape_string($_POST["username"]) . "', '" . mysql_real_escape_string($passwort) . "', '" . mysql_real_escape_string($_POST["email"]) . "')";  
$eintragen = mysql_query($eintrag);  
}  
  
  
if($eintragen == true)  
{  
echo "Hallo <b>$_POST["username"]</b>, Du hast Dich erfolgreich registriert. <a href=\"anmelden.html\">Anmelden</a>";  
}  
else  
{  
echo "Deine Registrierung ist leider fehlgeschlagen.  
echo Sollte Deine Registrierung nochmals fehlschlagen, sende mir bitte eine E-Mail:  
echo <a href="mailto:mail@potionmaster.de">mail@potionmaster.de</a>  
echo <br>  
echo <br>  
echo <a href=\"eintragen.html\">Zurück</a>";  
}  
  
}  
else  
{  
echo "Der Benutzername ist schon vergeben. Du musst einen anderen wählen.  
echo  <a href=\"eintragen.html\">Zurück</a>";  
}  
  
//schließen der noch offenen "else" Anweisungen  
  
}  
}  
}  
}  
  
mysql_close ($verbindung);  
?>  

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. Da meine Besucher beim registrieren Ihre Mail-Adresse angeben müssen, habe ich das auch noch eingefügt.

Könnte ich die Prüfung der Mail-Adresse auf diese Weise machen?

  
if(check_email($email))  
{  
$nonascii      = "\x80-\xff"; # Non-ASCII-Chars are not allowed  
  
$nqtext        = "[^\\\\$nonascii\015\012\"]";  
$qchar         = "\\\\[^$nonascii]";  
  
$protocol      = '(?:mailto:)';  
  
$normuser      = '[a-zA-Z0-9][a-zA-Z0-9_.-]*';  
$quotedstring  = "\"(?:$nqtext|$qchar)+\"";  
$user_part     = "(?:$normuser|$quotedstring)";  
  
$dom_mainpart  = '[a-zA-Z0-9][a-zA-Z0-9._-]*\\.';  
$dom_subpart   = '(?:[a-zA-Z0-9][a-zA-Z0-9._-]*\\.)*';  
$dom_tldpart   = '[a-zA-Z]{2,5}';  
$domain_part   = "$dom_subpart$dom_mainpart$dom_tldpart";  
  
$regex         = "$protocol?$user_part\@$domain_part";  
  
return preg_match("/^$regex$/",$email);  
}  
else  
{  
echo "Du musst eine korrekt E-Mail-Adresse angeben.  
echo <a href=\"eintragen.html\">Zurück</a>";  

Sollte ich hier noch ein Beispiel angeben, damit der Besucher weiß, was ich mit korrekter E-Mail-Adresse meine?

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.

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"]);  

Mittlerweile habe ich allerdings das Gefühl, trotz ständigem Lesens, Nachschlagens usw. habe ich absolut keinen Schimmer von PHP. Bin für weitere TIPPs und Anregungen sehr dankbar.

Liebe Grüße
Poison