Dieses System der Fehleranzeige ist sehr oft zu sehen, denke ich mal und
Es wäre sehr sehr nett, wenn sich jemand meinem Problem annehmen könnte =)
<?php
function register() {
// globale Variablen definieren
$wunsch_name = $_POST['wunschname'];
$passwort1 = $_POST['passwort1'];
$passwort2 = $_POST['passwort2'];
$email1 = $_POST['email1'];
$email2 = $_POST['email2'];
Vermeide es sinnlos Variablen herumzukopieren (bzw. verweise zu erstellen) - das macht deinen code nur unleserlich.
// bereits vergebene Benutzernamen auslesen $sql = "SELECT user_benutzername FROM ".MYSQL_PREFIX."users "; $result = mysql_query($sql) OR die(mysql_error()); $benutzernamen = array(); while ($entry = mysql_fetch_assoc($result)) { array_push($benutzernamen, $entry['user_benutzername']); }
Warum prüfst du nicht gleich, ob $_POST['wunschname'] schon exsistiert - es ist höchst ineffizent, alle Benutzer auszulesen, in ein array zu schreiben und diese dann durchzuackern - ich möchte nicht wissen, wie langsam das wird, wenn du mal 50000 Benutzer in deiner Datenbank hast.
Ebenso würde ich sämtliche Eingabeprüfungen vor die SQL-Abfrage schieben, wenn diese scheitern - z.B. wenn der Benutzername ein Leerstring ist - kannst du dir die Abfrage gleich schenken und musst die Datenbank nicht belasten.
Ebenso solltest du den Fehlerzähler ausbauen und gegen eine Fehlernummern-Lösung tauschen.
Wenn ein Fehler auftritt, setzt du exakt diesen Wert in ein array für deine Fehler.
[code lang=php]$fehler = array();
// wenn Benutzername leer
$fehler[] = 'user_is_empty';
// wenn Passwörter unterschiedlich
$fehler[] = 'passwords_do_not_match';
Später wertest du die Fehler dann aus, indem du in einem array die eigentliche Fehlermeldungen rausliest.
~~~php
$fehlerteste = array(
'default' => array(
'user_is_empty' => 'Username is empty!',
'passwords_do_not_match' => 'Your Passwords don't match!',
),
'de' => array(
'user_is_empty' => 'Benutzername ist leer!',
'passwords_do_not_match' => 'Die Passwörter stimmen nicht überein!',
),
);