PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP Grundlagen (http://www.selfphp.de/forum/forumdisplay.php?f=12)
-   -   Anmeldeformular (http://www.selfphp.de/forum/showthread.php?t=6752)

bigvillain 25.01.2004 23:08:55

Anmeldeformular
 
Hallo,
ich will ein Anmeldeformular in PHP programmieren, welches auf MySQL basiert, bekomme es aber nicht optimal hin.
Wenn ein Textfeld nicht ausgefüllt ist, soll eine Fehlermeldung über ihm steht. Jedoch wenn alles ok ist, soll das Formular nicht mehr angezeigt werden.
Hier meine Bisherige Überlegung, jedoch finde ich sie mit der Funktion header() schlecht gelöst.


PHP-Code:

<?php
if ($submit) {
if (
$alias == "" || $passwort == ""){
// Fehlermeldung ausgeben.
}
else {
// Daten in die MySQL-Datenbank schreiben.
header("Location: http://../bla.php");
}
}
?>

<form action="<?php echo($PHP_SELF); ?>" method="post">
<input type="text" name="alias">
<br>
<input type="password" name="passwort">
<br>
<input type="submit" name="submit">
</form>


c4 25.01.2004 23:21:42

Mal so als kleines Frei-Schnauze-Beispiel:
PHP-Code:

<?php
$error
='';
if (isset(
$_POST['action'])) {
    if (!isset(
POST['name'])) {
        
$error.='a';
    }
    if (!isset(
POST['email'])) {
        
$error.='b';
    }
    if (!isset(
POST['website'])) {
        
$error.='c';
    }
}

$message['a']='Name angeben!';
$message['b']='E-Mail angeben!';
$message['c']='Website angeben!';

if (!isset(
$_POST['action']) || isset($_POST['action']) && $error!='') {
?>
<form action='<?php echo $_SERVER['PHP_SELF']; ?>' method='post'>
    <input type='hidden' name='action' value='1' />
    <?php if (strstr($error'a')) { echo $message['a'].'<br />'; } ?>
    Name: <input type='text' name='name' value='<?php echo @$_POST['name']; ?>' /><br />
    <?php if (strstr($error'b')) { echo $message['b'].'<br />'; } ?>
    E-Mail: <input type='text' name='email' value='<?php echo @$_POST['email']; ?>' /><br />
    <?php if (strstr($error'c')) { echo $message['c'].'<br />'; } ?>
    Website: <input type='text' name='website' value='<?php echo @$_POST['website']; ?>' /><br />
</form>
<?php
}
else {
    
// Daten in DB packen
}
?>

Damit hast Du eine kleine Fehlerkontrolle, eine Ausschrift und das Formular wird nur angezeigt, wenn es noch nicht abgeschickt wurde, bzw. wenn es abgeschickt wurde, alle Felder ausgefüllt wurden.

bigvillain 26.01.2004 20:31:09

Danke für das Script, auch wenn er einen kleinen Fehler hatte.
So ist er richtg:

PHP-Code:

[...]

if (isset(
$_POST['action'])) {  
    if (empty(
$_POST['name'])) {  
        
$error.='a';  
    }  
    if (empty(
$_POST['email'])) {  
        
$error.='b';  
    }  
    if (empty(
$_POST['website'])) {  
        
$error.='c';  
    }  
}  

[...] 

Gruß Bigvillain

meikel (†) 26.01.2004 22:06:35

Zitat:

Original geschrieben von bigvillain
[B]Danke für das Script, auch wenn er einen kleinen Fehler hatte.
So ist er richtg:
Es muß beides geprüft werden:
$error = '';

if (!isset($_POST['var'] OR empty(trim($_POST['var']))) $error .= 'Wüste Beschimpfung';

Ist die Variable nicht gesetzt, verursacht empty() eine Notiz (abhängig von error_reporting()).
Die Variable kann auch gesetzt, aber leer sein.
Sie kann auch ein Leerzeichen enthalten.
Dann ist sie gesetzt, nicht leer aber trotzdem nicht verwendbar.

Und selbst wenn sie Text enthält, kann der auch aus Unfug bestehen.


Alle Zeitangaben in WEZ +2. Es ist jetzt 07:57:08 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.