suit: Variablen aus Funktion global verfügbar machen

Beitrag lesen

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!',  
  ),  
);