tutorials.de-Buchverschenkaktion 08/2010
+ Auf Thema antworten
  1. #1
    Registriert seit
    Apr 2004
    Ort
    Berlin
    Beiträge
    184
    Hi liebe Community,

    ich habe ein recht witziges Problem. Ich habe ein Formular für die Registrierung eines Browsergames. Da muss man Nickname, Passwort+Kontrolle, E-Mail+Kontrolle und Häuptlingsgeschlecht angeben. Nur Leider gibt er wenn ich es überliefere a) immer aus das keine E-Mailadresse angegeben wurde und b) meckert er nicht, dass das Häuptlingsgeschlecht nicht gewählt wurde.

    Das Formular:
    HTML-Code:
    <form action="anmelden2.php" method="POST">
    <table border=0>
    <tr> <td> <input type="text" name="nick" size="20"> 			 </td> <td> Username*             </td> </tr>
    <tr> <td> <input type="text" name="email" size="20"> 			 </td> <td> E-Mail Adresse        </td> </tr>
    <tr> <td> <input type="text" name="email2" size="20"> 		 </td> <td> E-Mail Wiederholung   </td> </tr>
    <tr> <td> <input type="password" name="password" size="20"> 	 </td> <td> Passwort              </td> </tr>
    <tr> <td> <input type="password" name="password2" size="20"> </td> <td> Passwort Wiederholung </td> </tr>
    <tr> <td> H&auml;uptling: </td> <td> <input type="radio" name="gender" value="male"> m&auml;nnlich  </td> </tr>
    <tr> <td> <input type="submit" value="Anmelden" /> </td> <td> <input type="radio" name="gender" value="female"> weiblich     </td> </tr>
    </table>
    Das PHP-Skript:
    PHP-Code:
    $error = array();
    $e 0;

    if(
    $_REQUEST['nick'] == "")                                    { $error[1] = "Nickname wurde nicht angegeben<br>";     $e 1; }

    if(
    $_REQUEST['email'] == "" OR $_REQUEST['email2'] == "") { $error[2] = "E-Mail wurde nicht angegeben<br>";       $e 1; }
    if(
    $_REQUEST['email'] != $_REQUEST['email2'])              { $error[3] = "E-Mails stimmen nicht &uuml;berein<br>"$e 1; }

    if(
    $_REQUEST['passowrd'] == "" OR $_REQUEST['passowrd2'] == "") { $error[4] = "Passwort wurde nicht angegeben<br>"$e 1; }
    if(
    $_REQUEST['password'] != $_REQUEST['password2'])              { $error[5] = "Passw&ouml;rter stimmen nicht &uuml;berein<br>"$e 1; }


    if(isset(
    $_REQUEST['gender'])) { $error[4] = "Kein H&auml;uptlingsgeschlecht gewählt<br>"$e 1; } 
                        
    // Prüfe Nickname Länge
    $check_nick_lenght strlen($_REQUEST['nick']);
    if(
    $check_nick_lenght 21) { $error[6] = "Nickname ist zu lang<br>"$e 1; }
    if(
    $check_nick_lenght 4)  { $error[7] = "Nickname ist zu kurz<br>"$e 1; }
    // Prüfe Nickname auf Leerzeichen
    $check_nick strrpos($_REQUEST['nick']," ");
    if(
    $check_nick == "") { $check_nick 0; }
    if(
    $check_nick >= 1)  { $error[8] = "Nickname enth&auml;lt Leerzeichen<br>"$e 1;  }
    // Prüfe Mail auf @
    $check_mail_at strrpos($_REQUEST['email'],"@");
    if(
    $check_mail_at == 1) { $check_mail_at 0; }
    if(
    $check_mail_at == "")  { $error[9] = "E-Mail enth&auml;lt kein \"@\"<br>"$e 1;  }
    // Prüfe Mail auf .
    $check_mail_dot strrpos($_REQUEST['email'],".");
    if(
    $check_mail_dot == 1) { $check_mail_dot 0; }
    if(
    $check_mail_dot == "")  { $error[10] = "E-Mail enth&auml;lt kein \".\"<br>"$e 1;  }


    if(
    $e == 1)
    {
        print(
    "<font color=yellow>");
        if(
    $error[1] != "") { print($error[1]."<br>"); }
        if(
    $error[2] != "") { print($error[2]."<br>"); }
        if(
    $error[3] != "") { print($error[3]."<br>"); }
        if(
    $error[4] != "") { print($error[4]."<br>"); }
        if(
    $error[5] != "") { print($error[5]."<br>"); }
        if(
    $error[6] != "") { print($error[6]."<br>"); }
        if(
    $error[7] != "") { print($error[7]."<br>"); }
        if(
    $error[8] != "") { print($error[8]."<br>"); }
        if(
    $error[9] != "") { print($error[9]."<br>"); }
        if(
    $error[10] != "") { print($error[10]."<br>"); }
        print(
    "</font><br>"); 
    Danke schon mal im vorraus, für alle Antworten.

    MfG philishake
    ...holiday from happiness...

    ...be water...

    visit: www.silent-wars.de

  2. PHP 5 / MySQL 5 Seminar (22 Stunden Video-Training)

    Preis: früher: 39,95€ - jetzt nur: 7,99€
    Innerhalb Deutschlands versandkostenfrei!

    PHP 5 / MySQL 5 Lernkurs – 22 Stunden Video-Training auf DVD
    - PHP-, MySQL- und PHPMyAdmin-Grundlagen
    - Datenbankprogrammierung, objektorientierte Programmierung
    - Geeignet für Windows XP und Windows Vista


    Hier geht es zum Angebot

    Über 1.000 weitere IT-Bücher zum Sonderpreis lieferbar!


  3. #2
    Registriert seit
    Apr 2004
    Ort
    Berlin
    Beiträge
    184
    Mittlerweile gibt er alle Fehler richtig aus. Aber er sagt mir immer, dass kein 2tes PW oder MAIL angegeben wurde und das die nicht übereinstimmen. Und er meckert nun auch, wenn kein Häuptlingsgeschlecht gewählt wurde. Aber wie geasgt, der Rest stimmt nicht.
    Geändert von philishake (13.09.07 um 16:42 Uhr)
    ...holiday from happiness...

    ...be water...

    visit: www.silent-wars.de

  4. #3
    blade runner blade runner ist offline Mitglied Bronze blade runner hat eine blütenweiße Weste
    Registriert seit
    Feb 2007
    Beiträge
    47
    Hallo,
    erst einmal solltest Du das Formular schließen,
    dann von (Geschlecht)
    Code :
    1
    
    if(isset($_REQUEST['gender'])) { $error[4] = "Kein H&auml;uptlingsgeschlecht gewählt<br>"; $e = 1; }
    nach
    Code :
    1
    
    if(!isset($_REQUEST['gender'])) { $error[4] = "Kein H&auml;uptlingsgeschlecht gewählt<br>"; $e = 1; }
    und von (Password)
    Code :
    1
    
    if($_REQUEST['passowrd'] == "" OR $_REQUEST['passowrd2'] == "") { $error[4] = "Passwort wurde nicht angegeben<br>"; $e = 1; }
    nach
    Code :
    1
    
    if($_REQUEST['password'] == "" OR $_REQUEST['password2'] == "") { $error[4] = "Passwort wurde nicht angegeben<br>"; $e = 1; }
    Die email läuft bei mir.

  5. #4
    Registriert seit
    Apr 2004
    Ort
    Berlin
    Beiträge
    184
    Okay, ich bin wieder einen Schritt weiter. Nun werden nurnoch diese Fehler ausgegen, trotz korrekter Ausfüllung des Formulars:

    HTML-Code:
    E-Mail enthält kein "@"
    E-Mailcheck enthält kein "@"
    Passwort wurde nicht angegeben
    Hier der aktuelle PHP-Code:

    PHP-Code:
    <?
    $error 
    = array();
    $e 0;

    if(
    $_REQUEST['nick'] == "")                                    { $error[1] = "Nickname wurde nicht angegeben<br>";     $e 1; }

    if(
    $_REQUEST['email'] == "" OR $_REQUEST['email2'] == "") { $error[2] = "E-Mail wurde nicht angegeben<br>";       $e 1; }
    if(
    $_REQUEST['email'] != $_REQUEST['email2'])              { $error[3] = "E-Mails stimmen nicht &uuml;berein<br>"$e 1; }

    if(
    $_REQUEST['passowrd'] == "" OR $_REQUEST['passowrd2'] == "") { $error[4] = "Passwort wurde nicht angegeben<br>"$e 1; }
    if(
    $_REQUEST['password'] != $_REQUEST['password2'])              { $error[5] = "Passw&ouml;rter stimmen nicht &uuml;berein<br>"$e 1; }


    if(isset(
    $_REQUEST['gender'])) {  } 
    else { 
    $error[11] = "Kein H&auml;uptlingsgeschlecht gew&auml;hlt<br>"$e 1; }
                        
    // Prüfe Nickname Länge
    $check_nick_lenght strlen($_REQUEST['nick']);
    if(
    $check_nick_lenght 21) { $error[6] = "Nickname ist zu lang<br>"$e 1; }
    if(
    $check_nick_lenght 4)  { $error[7] = "Nickname ist zu kurz<br>"$e 1; }
    // Prüfe Nickname auf Leerzeichen
    $check_nick strrpos($_REQUEST['nick']," ");
    if(
    $check_nick == "") { $check_nick 0; }
    if(
    $check_nick >= 1)  { $error[8] = "Nickname enth&auml;lt Leerzeichen<br>"$e 1;  }
    // Prüfe Mail auf @
    $check_mail_at strrpos($_REQUEST['email'],"&");
    if(
    $check_mail_at == 1) { $check_mail_at 0; }
    elseif(
    $check_mail_at == "")  { $error[9] = "E-Mail enth&auml;lt kein \"@\"<br>"$e 1;  }
    // Prüfe Mail auf .
    $check_mail_dot strrpos($_REQUEST['email'],".");
    if(
    $check_mail_dot == 1) { $check_mail_dot 0; }
    elseif(
    $check_mail_dot == "")  { $error[10] = "E-Mail enth&auml;lt kein \".\"<br>"$e 1;  }
    // Prüfe Mail2 auf @
    $check_mail_at strrpos($_REQUEST['email2'],"&");
    if(
    $check_mail_at == 1) { $check_mail_at 0; }
    elseif(
    $check_mail_at == "")  { $error[12] = "E-Mailcheck enth&auml;lt kein \"@\"<br>"$e 1;  }
    // Prüfe Mai2l auf .
    $check_mail_dot strrpos($_REQUEST['email2'],".");
    if(
    $check_mail_dot == 1) { $check_mail_dot 0; }
    elseif(
    $check_mail_dot == "")  { $error[13] = "E-Mailcheck enth&auml;lt kein \".\"<br>"$e 1;  }



    if(
    $e == 1)
    {
        print(
    "<font color=yellow>");
        print(
    $error[1]);
        print(
    $error[6]);
        print(
    $error[7]);
        print(
    $error[8]);
        print(
    $error[2]);
        print(
    $error[3]);
        print(
    $error[9]);
        print(
    $error[10]);
        print(
    $error[12]);
        print(
    $error[13]);
        print(
    $error[4]);
        print(
    $error[5]);
        print(
    $error[11]);
        print(
    "</font><br>");

        
    ?>
        <form action="anmelden2.php" method="post">
        <table border=0>
        <tr> <td> <input type="text" name="nick" size="20" value=<?=$_REQUEST['nick']?>>     </td> <td> Username*             </td> </tr>
        <tr> <td> <input type="text" name="email" size="20" value=<?=$_REQUEST['email']?>> </td> <td> E-Mail Adresse        </td> </tr>
        <tr> <td> <input type="text" name="email2" size="20" value=<?=$_REQUEST['email2']?>>          </td> <td> E-Mail Wiederholung   </td> </tr>
        <tr> <td> <input type="password" name="password" size="20" value=<?=$_REQUEST['password']?>>      </td> <td> Passwort              </td> </tr>
        <tr> <td> <input type="password" name="password2" size="20" value=<?=$_REQUEST['password2']?>> </td> <td> Passwort Wiederholung </td> </tr>
        <tr> <td> H&auml;uptling: </td> <td> <input type=radio name=gender value=male> m&auml;nnlich  </td> </tr>
        <tr> <td> <input type="submit" value="Anmelden" /> </td> <td> <input type=radio name=gender value=female> weiblich     </td> </tr>
        </table>
        <br>
        *Maximal 4-21 Zeichen <br>
        *Erlaubt sind folgende Zeichen: a-z | A-Z | 0-1 | - und _<br>
        *Der Nickname darf <b>keine</b> Leerzeichen enthalten <br>
        </form>   
        <?php

    }
    else
    {
        
    //include ("anmelden_inc.php"); 
        
    print("ALLES OK");
    }
    ...holiday from happiness...

    ...be water...

    visit: www.silent-wars.de

  6. #5
    Registriert seit
    Apr 2004
    Ort
    Berlin
    Beiträge
    184
    Ok, habs nun selbst hinbekomment. Hatte bei strpos() anstatt @ ein & eingesetzt. Das Password wurde nicht übergeben weil ich nach "passowrd" und nicht nach "password" fragt. Danke an BladeRunner
    Geändert von philishake (13.09.07 um 17:25 Uhr)
    ...holiday from happiness...

    ...be water...

    visit: www.silent-wars.de

  7. #6
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.506
    Blog-Einträge
    10
    Du kannst es dir auch etwas bequemer machen, in dem du die Überprüfung der Werte automatisiert, beispielsweise:
    PHP-Code:
    <?php

        $errors 
    = array();
        
    $required = array(
            
    '_POST' => array(
                
    'nick'      => 'Nickname wurde nicht angegeben!',
                
    'email'     => 'E-Mail wurde nicht angegeben!',
                
    'email2'    => 'Wiederholung der E-Mail-Adresse wurde nicht angegeben!',
                
    'password'  => 'Passwort wurde nicht angegeben!',
                
    'password2' => 'Wiederholung des Passworts wurde nicht angegeben!',
                
    'gender'    => 'Kein Häuptlingsgeschlecht ausgewählt!',
            ),
        );

        if( 
    $_SERVER['REQUEST_METHOD'] == 'POST' ) {
            foreach( 
    $required as $method => $args ) {
                if( isset(
    $GLOBALS[$method]) {
                    foreach( 
    $args as $key => $val ) {
                        if( !isset(
    $GLOBALS[$method][$key]) || trim($GLOBALS[$method][$key]) == '' ) {
                            
    $errors[] = $val;
                        }
                    }
                }
            }

            if( empty(
    $errors) ) {
                if( 
    $_POST['email'] != $_POST['email2'] ) {
                    
    $errors[] = 'Die angegebene E-Mail-Adresse und die Bestätigung dieser stimmen nicht überein!';
                }
                if( 
    $_POST['password'] != $_POST['password2'] ) {
                    
    $errors[] = 'Das angegebene Passwort und die Bestätigung dieses stimmen nicht überein!';
                }
                
    // Prüfe Nickname-Länge
                
    $check_nick_lenght strlen($_POST['nick']);
                if( 
    $check_nick_lenght 21 ) {
                    
    $errors[] = "Nickname darf höchstens 21 Zeichen lang sein!";
                }
                if( 
    $check_nick_lenght ) {
                    
    $errors[] = "Nickname muss mindestens 4 Zeichen lang sein!";
                }
                
    // Prüfe Nickname auf Leerzeichen
                
    if( preg_match('/\s/'$_POST['nick']) ) {
                    
    $errors[] = "Nickname darf keine Leerzeichen enthalten!";
                }
                
    // Prüfe E-Mail-Syntax
                
    if( !preg_match('/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,5}$/'$_POST['email']) ) {
                    
    $errors[] = 'E-Mail-Adresse muss das Muster <code>user@example.net</code> haben!";
                }
            }
        }

        if( !empty($errors) ) {
            echo '
    <div class="note error"><ul>';
            echo '
    <li>'.explode('</li><li>', $errors).'</li>';
            echo '
    </ul></div>';
    ?>
        <form action="anmelden2.php" method="post"> 
        <table border=0> 
        <tr> <td> <input type="text" name="nick" size="20" value="<?php echo isset($_POST['
    nick']) ? htmlspecialchars($_POST['nick']) : ''; ?>">     </td> <td> Username*             </td> </tr> 
        <tr> <td> <input type="text" name="email" size="20" value="<?php echo isset($_POST['
    email']) ? htmlspecialchars($_POST['email]); ?>"> </td> <td> E-Mail-Adresse        </td> </tr> 
        <tr> <td> <input type="text" name="email2" size="20" value="">          </td> <td>Bestätigung der E-Mail-Adresse   </td> </tr>
        <tr> <td> <input type="password" name="password" size="20" value="">      </td> <td> Passwort              </td> </tr> 
        <tr> <td> <input type="password" name="password2" size="20" value=""> </td> <td> Bestätigung des Passworts </td> </tr> 
        <tr> <td> Häuptling: </td> <td> <input type="radio" name="gender" value="male"> männlich  </td> </tr> 
        <tr> <td> <input type="submit" value="Anmelden" /> </td> <td> <input type="radio" name="gender" value="female"> weiblich     </td> </tr>
        </table> 
        <br> 
        *Maximal 4-21 Zeichen <br> 
        *Erlaubt sind folgende Zeichen: a-z | A-Z | 0-1 | - und _<br> 
        *Der Nickname darf <b>keine</b> Leerzeichen enthalten <br> 
        </form>    
    <?php

        
    } else {

            
    // include ("anmelden_inc.php");
            
    print("ALLES OK"); 
        }

    ?>
    Ich hoffe es klappt.
    Markus Wulftange

  8. #7
    Registriert seit
    Apr 2004
    Ort
    Berlin
    Beiträge
    184
    Wow, Danke Gumbo, vom ersten Überblick siehts es schonmal sehr gut aus. Ich werde mich mal ranmachen dies zu testen
    ...holiday from happiness...

    ...be water...

    visit: www.silent-wars.de

Ähnliche Themen

  1. Prototype und Formularübergabe
    Von notebook20000 im Forum Javascript & Ajax
    Antworten: 4
    Letzter Beitrag: 17.04.07, 16:50
  2. Antworten: 5
    Letzter Beitrag: 20.02.06, 19:36
  3. Antworten: 2
    Letzter Beitrag: 03.06.05, 13:55
  4. Formularübergabe an Ergebnissseite und Reload
    Von HammerHe@rt im Forum PHP
    Antworten: 1
    Letzter Beitrag: 05.08.04, 09:58
  5. Newbie Problem :: Formularübergabe
    Von Mojo im Forum Flash Plattform
    Antworten: 3
    Letzter Beitrag: 17.10.01, 20:30

Lesezeichen

Lesezeichen