Fehlermeldung auf selber Seite

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

  • Fehlermeldung auf selber Seite

    Hi

    Ich hab mir mittels eines Tutorials einen Login mit Session ID gebastelt.
    Der funktioniert recht gut, allerdings möchte ich eine Funktion etwas abändern.

    Zur Zeit wird bei falscher oder fehlender Dateneingabe im Formularfeld eine Fehlermeldung auf einer neuen Seite angezeigt.
    Dort mußte ich extra einen Link einbauen um wieder auf das Formular zu kommen.

    Ich würde jetzt ganz gerne die Fehlermeldung(en) direkt über dem Formular anzeigen lassen - um bei fehlerhafter Eingabe einen Klick zu sparen.
    Was muss ich dafür abändern?

    Hier mein Code:
    PHP-Code:
    <?php
    session_start
    ();

    require(
    "connect.inc.php");
    include(
    "header.php");

    if(!isset(
    $_POST['submit'])) { ?>
    <form action="<?php $PHP_SELF ?>" method="post">
    <table border="0" cellpadding="5" cellspacing="1">
        <tr>
            <td colspan="2">
            <b>Login</b>
            </td>
        </tr>
        <tr>
            <td>Benutzername:</td>
            <td><input type="text" name="username" size="10" class="input"
    <?php if($_POST['username'] != "") {echo ' value="'.$_POST['username'].'"';} ?>></td>
        </tr>
        <tr>
            <td>Passwort:</td>
            <td><input type="password" name="password" size="10" class="input"></td>
        </tr>
        <tr>
            <td align="right" colspan="2">
            <input type="submit" name="submit" value="Anmelden" class="button"></form>
            </td>
        </tr>
        <tr>
            <td colspan="2" align="right">
    <a href="register.php">Einen Benutzeraccount registrieren</a></td>
        </tr>
    </table>
    <br />


    <?php
    }elseif(!isset($_POST['username']) || $_POST['username'] == "") {
        echo 
    '<p align="center">Einen Benutzernamen brauchen wir schon ;-)
    <br /><br /><a href="login.php">Zur&uuml;ck</a>'
    ;
    }elseif(!
    $_POST['password'] || $_POST['password'] == "") {
        echo 
    '<form action="login.php" method="post">';
        echo 
    'Ein Passwort brauchen wir schon ;-)<br /><br />';
        echo 
    '<input type="hidden" name="username" value="'.$_POST['username'].'">';
        echo 
    '<input type="submit" name="zurueck" value="Zur&uuml;ck">';
        echo 
    '</form>';
    }else{
        
    $password md5($password);
        
    $query = @mysql_query("SELECT user, pass FROM users WHERE user = 
    '"
    .$_POST['username']."'") or die('Select ist fehlgeschlagen!');
        
    $result = @mysql_fetch_array($query)
     or die(
    'Sorry, aber dieser Benutzername existiert nicht!
    <br /><br /><a href="login.php">Zur&uuml;ck zur Anmeldung</a>'
    );
        if(
    $password != $result['pass']){
            echo 
    '<form action="login.php" method="post">';
            echo 
    'Sorry, aber dieses Passwort ist falsch!<br /><br />';
            echo 
    '<input type="hidden" name="username" value="'.$_POST['username'].'">';
            echo 
    '<input type="submit" name="zurueck" value="Zur&uuml;ck">';
            echo 
    '</form>';
            die;
        }else{
            
    $user $result['user'];
            
    session_register('user');
                echo 
    '<meta http-equiv="refresh"content="0;URL=intern.php">';
            
    ?>
            <script language="JavaScript">
            window.setTimeout('window.location.href="intern.php"','3000')
            </script>
            <?php
        
    }
    }
    include(
    "footer.php");
    ?>
    Danke im Vorraus!
    Doomlittle
    Zuletzt geändert von Doomlittle; 10.07.2005, 13:45.

  • #2
    Überprüfe die Eingaben vor der Ausgabe des Formulars.
    Dann machst du
    PHP-Code:
    if (Fehler OR !isset($_POST['submit']))
      
    // Form ausgeben
    else
      
    // Umleitung auf intern.php 

    Kommentar


    • #3
      Danke,

      PHP-Code:
      if(!isset($_POST['username']) || $_POST['username'] == "" 
      or !$_POST['password'] || $_POST['password'] == "" 
      or !isset($_POST['submit'])) { ?>
      <form action="<?php $PHP_SELF ?>" method="post">
      Jetzt werden aber nur die Fehler abgefangen, ich möchte ja zusätzlich die Fehlermeldung über dem Formular mitausgeben

      Kommentar


      • #4
        PHP-Code:
        $err_str '';

        if (!isset(
        $_POST['username']) || $_POST['username'] == "") {
            
        $err_str .= 'Username fehlt!<br />';
        }
        if (!isset(
        $_POST['password']) || $_POST['password'] == "") {
            
        $err_str .= 'Passwort fehlt!<br />';
        }
        // weitere Tests nach obigem Schema

        if (!empty($err_string) || !isset($_POST['submit'])) {
            echo 
        $err_str;
            echo 
        '<form ....';
        } else {
            
        // umleiten

        Kommentar

        Lädt...
        X