Fehlermeldung auf selber Seite

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 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
    Last edited by 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 

    Comment


    • #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

      Comment


      • #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

        Comment

        Working...
        X