|
|
| |
| |
Hallo und herzlich willkommen! Tutorials.de ist eine Hilfe-Community mit dem Motto User helfen Usern. Als Gast verfügst Du über Schreibrechte in unseren Foren und Blogs. Du kannst dich aber gerne auch kostenlos registrieren und Teil unserer Gemeinschaft werden! Viel Spaß & Erfolg bei der Vermehrung deines Wissens :-)
|
|
|
 |
|
|
|
|
|
|
13.09.07, 15:22
|
#1 (permalink)
|
Registriert seit: Apr 2004
Ort: Berlin
Beiträge: 171
Renommee-Modifikator: 0
|
Fehler bei Formularübergabe
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ä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>
|
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 ü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örter stimmen nicht überein<br>"; $e = 1; }
if(isset($_REQUEST['gender'])) { $error[4] = "Kein Hä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ä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ä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ä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
|
13.09.07, 16:40
|
#2 (permalink)
|
Registriert seit: Apr 2004
Ort: Berlin
Beiträge: 171
Renommee-Modifikator: 0
|
AW: Fehler bei Formularübergabe
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).
|
13.09.07, 16:53
|
#3 (permalink)
|
|
Mitglied Bronze
Registriert seit: Feb 2007
Beiträge: 41
Renommee-Modifikator: 0
|
AW: Fehler bei Formularübergabe
Hallo,
erst einmal solltest Du das Formular schließen,
dann von (Geschlecht)
|
Code:
|
if(isset($_REQUEST['gender'])) { $error[4] = "Kein Häuptlingsgeschlecht gewählt<br>"; $e = 1; }
|
nach
|
Code:
|
if(!isset($_REQUEST['gender'])) { $error[4] = "Kein Häuptlingsgeschlecht gewählt<br>"; $e = 1; }
|
und von (Password)
|
Code:
|
if($_REQUEST['passowrd'] == "" OR $_REQUEST['passowrd2'] == "") { $error[4] = "Passwort wurde nicht angegeben<br>"; $e = 1; }
|
nach
|
Code:
|
if($_REQUEST['password'] == "" OR $_REQUEST['password2'] == "") { $error[4] = "Passwort wurde nicht angegeben<br>"; $e = 1; }
|
Die email läuft bei mir.
|
13.09.07, 16:55
|
#4 (permalink)
|
Registriert seit: Apr 2004
Ort: Berlin
Beiträge: 171
Renommee-Modifikator: 0
|
AW: Fehler bei Formularübergabe
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 ü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örter stimmen nicht überein<br>"; $e = 1; }
if(isset($_REQUEST['gender'])) { }
else { $error[11] = "Kein Hä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ä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ä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ä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ä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ä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ä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");
}
|
|
13.09.07, 17:22
|
#5 (permalink)
|
Registriert seit: Apr 2004
Ort: Berlin
Beiträge: 171
Renommee-Modifikator: 0
|
AW: Fehler bei Formularübergabe
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).
|
13.09.07, 19:23
|
#6 (permalink)
|
Registriert seit: Dec 2002
Ort: Trier
Beiträge: 17.511
|
AW: Fehler bei Formularübergabe
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 < 4 ) { $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
|
21.09.07, 12:46
|
#7 (permalink)
|
Registriert seit: Apr 2004
Ort: Berlin
Beiträge: 171
Renommee-Modifikator: 0
|
AW: Fehler bei Formularübergabe
Wow, Danke Gumbo, vom ersten Überblick siehts es schonmal sehr gut aus. Ich werde mich mal ranmachen dies zu testen 
|
|
| Themen-Optionen |
|
|
| Ansicht |
Linear-Darstellung
|
|
 |
|
»
Neue Tutorials
|
 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
»
Letzte News
|
 |
|
|
|
|
|
|
|
|
|
|
»
Tools
|
 |
|
|
|
|
|
»
Neue Links
|
 |
|
|
|
|
(Cinema 4D-Objekte)
|
|
(Cinema 4D-Tutorials)
|
|
(Cinema 4D-Tutorials)
|
|
(Cinema 4D-Tutorials)
|
|
(Cinema 4D-Tutorials)
|
|
»
Jobs @ tutorials.de
|
 |
|
|
|
|
|
|
|
|
|
|