Ankündigung

Einklappen
Keine Ankündigung bisher.

Schleifenproblem bei Registrierung per Benutzer und Email

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Schleifenproblem bei Registrierung per Benutzer und Email

    Hallo Leute,
    ich möchte eine Seite programmieren, auf der man sich registrieren muss. Das ganze soll folgendermassen laufen:

    1. Eingabe des gewünschten Benutzernamens
    2. Eingabe der E-Mailadresse

    Im Skript sol folgendes passieren:

    1. Öffnen der DB und Auslesen der Benutzernamen
    2. Wenn der Benutzername schon vorhanden ist, Abbruch und zurück mit Fehlermeldung.
    3. Wenn der Benutzername noch nicht existiert, Abfrage ob das Feld ausgefüllt wurde, wenn nein, zurück mit Fehlermeldung.
    4. Wenn das Feld für die Emailadresse leer ist, zurück mit Fehlermeldung.
    5. Wenn also beide Fehler korrekt sind, wird ein Passwort generiert und an die Emailadresse gesendet.
    6. Ausgabe einer Response-Seite.


    Leider funktionieren die Schleifen nicht wirklich. Es wird immer ein unexpected T_ELSE moniert. Leider habe ich aber keine Ahnung, wie ich das so verschachteln muss, das das Skript ordnungsgemäß durchläuft.

    Kann sich das mal jemand anschauen und einen Tipp geben?


    PHP-Code:
    <?php

        
    include ("db_connect.php");
        
        
    $abfrage1 mysql_query("SELECT benutzer FROM xxx");
         
         while (
    $row mysql_fetch_object ($abfrage1)) {
            
            if(
    $row->benutzer==$benutzer) {
                
    $error 3;
                
    $fehler "Dieser Benutzername ist bereits vergeben.";
                include (
    "register.php");
            exit;
            
            } else {
            
            if (
    $benutzer == "") {
                
    $error 1;
                
    $fehler "Bitte gib einen Benutzernamen ein.";
                include (
    "register.php");
            exit;
            }
            
            if (
    $email == "") {
                
    $error 2;
                
    $fehler "Um dir in Zukunft Mails zu schicken, brauchen wir deine E-mailadresse.";
                include (
    "register.php");
            exit;
            }
            
        } else {
            
            if (!
    function_exists("pw_generate")){
            
    // @param integer $length default 10
            // gibt Anzahl der Zeichen des Passwortes an
            
    function pw_generate($length 10) {
                
    $chars_for_pw  "ABCDEFGHKLMNPQRSTUVWXYZ";
                
    $chars_for_pw .= "23456789";
                
    $chars_for_pw .= "abcdefghkmnpqrstuvwxyz";
                
    $char_control  "";
                
    srand((double) microtime() * 1000000);
                for(
    $i=0;$i<$length;$i++) {
                    
    $number rand(0strlen($chars_for_pw));
                    
    $char_control .= $chars_for_pw[$number];
                }
                return 
    $char_control;
            }
        }
            
    $passwort pw_generate(10);
            
    $sql "INSERT INTO xxx SET benutzer='$benutzer', passwort='$passwort', email='$email'";
            
    $result mysql_query($sql);
            
    //echo mysql_error();
            
            
    $to $_POST['email'];
            
    $from "xxx@xxx.de";
            
    $header "From:$from\n";
            
    $header .= "Reply-To:$from\n";
            
    $header trim($header);
            
    $subject "Vielen Dank für deine Anmeldung!";
            
    $message "Bitte kehre nun zur Hauptseite [url]http://www.xxx.de/test[/url] zurück, um dich mit deinem Benutzernamen und dem folgenden Passwort einzuloggen: $passwort\n\nVielen Dank!";
            
    mail($to,  $subject,  $message,  $header);
            include (
    "confirm_register.php");
    }    
            
    }    
    ?>

  • #2
    Rück deinen Code richtig ein, dann siehst du dass nach deinem 1. else ein 2. folgt.

    Kommentar


    • #3
      Hallo,

      wozu auch ein else, wenn davor exit steht ? soll da die Schleife abgebrochen werden
      oder die Funktion, IMHO wäre break; exit; besser.

      hilfreich ist, sich bei den geschweiften Klammern Eselsbrücken zu bauen, zumindest während der Entwicklung.
      } // endwhile SQL_fetch
      } // end foreach $einarray
      } // end if $a==$b
      } // endfor $i
      } // endfunction pw_generate

      und Funktionen in einer Funktion oder einer Schleife sollte man vermeiden

      Kommentar


      • #4
        Also ich habe mal das ganze Skript etwas aufgeräumt und die Passwortfunktion aus der Schleife rausgenommen. Nun geht es! Danke für die Anregung!

        Kommentar


        • #5
          Du solltest trotzdem auf exit() Aufrufe weitgehend verzichten.

          Kommentar

          Lädt...
          X