Thema: Fehler bei Formularübergabe
-
13.09.07 15:22 #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:
Das PHP-Skript: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>
Danke schon mal im vorraus, für alle Antworten.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>");
MfG philishake
-
13.09.07 16:40 #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)
-
13.09.07 16:53 #3
- Registriert seit
- Feb 2007
- Beiträge
- 47
Hallo,
erst einmal solltest Du das Formular schließen,
dann von (Geschlecht)
nachCode :1
if(isset($_REQUEST['gender'])) { $error[4] = "Kein Häuptlingsgeschlecht gewählt<br>"; $e = 1; }
und von (Password)Code :1
if(!isset($_REQUEST['gender'])) { $error[4] = "Kein Häuptlingsgeschlecht gewählt<br>"; $e = 1; }
nachCode :1
if($_REQUEST['passowrd'] == "" OR $_REQUEST['passowrd2'] == "") { $error[4] = "Passwort wurde nicht angegeben<br>"; $e = 1; }
Die email läuft bei mir.Code :1
if($_REQUEST['password'] == "" OR $_REQUEST['password2'] == "") { $error[4] = "Passwort wurde nicht angegeben<br>"; $e = 1; }
-
13.09.07 16:55 #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:
Hier der aktuelle PHP-Code:HTML-Code:E-Mail enthält kein "@" E-Mailcheck enthält kein "@" Passwort wurde nicht angegeben
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
- 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)
-
Du kannst es dir auch etwas bequemer machen, in dem du die Überprüfung der Werte automatisiert, beispielsweise:
Ich hoffe es klappt.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");
}
?>Markus Wulftange
-
21.09.07 12:46 #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
![]() |
PHP 5 / MySQL 5 Seminar (22 Stunden Video-Training) Preis: früher: 39,95€ - jetzt nur: 7,99€ PHP 5 / MySQL 5 Lernkurs – 22 Stunden Video-Training auf DVD Hier geht es zum Angebot Über 1.000 weitere IT-Bücher zum Sonderpreis lieferbar! |
Ähnliche Themen
-
Prototype und Formularübergabe
Von notebook20000 im Forum Javascript & AjaxAntworten: 4Letzter Beitrag: 17.04.07, 16:50 -
fehler bei tutorials ? fehler beim löschen einer zeile aus einer txt
Von -GS-Master im Forum PHPAntworten: 5Letzter Beitrag: 20.02.06, 19:36 -
Formularübergabe an Datenbank und neuer Seite
Von kippi01 im Forum PHPAntworten: 2Letzter Beitrag: 03.06.05, 13:55 -
Formularübergabe an Ergebnissseite und Reload
Von HammerHe@rt im Forum PHPAntworten: 1Letzter Beitrag: 05.08.04, 09:58 -
Newbie Problem :: Formularübergabe
Von Mojo im Forum Flash PlattformAntworten: 3Letzter Beitrag: 17.10.01, 20:30



Zitieren

Login





Lesezeichen