Login Script problem...

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

  • Login Script problem...

    Hallo alle zusammen,

    ich hab ein Script geschrieben, womit sich die Besucher anmelden können, um Zugriff auf geschützte Bereiche zu haben.
    Soweit so gut aber nun hab ich ein Problem mit der Login Datei.
    Die Benutzerdaten werden in der Datenbank gespeichert.

    Folgende Fehlermeldung möchte ich noch einbauen: "Benutzername oder Passwort ist falsch!" was mir aber nicht gelingt.


    So sieht login.php aus:

    PHP-Code:
    <?php
     
    if(!isset($_SESSION['username'])) {
    echo 
    "Hallo Gast [<a href='login.php' class='link'>Login</a> | <a href='register.php' class='link'>Registrieren</a>]";
    }
    if(isset(
    $_SESSION['username'])) {
    echo 
    "Hallo ".$_SESSION['username']." <a href='login.php?action=logout' class='link'>[Abmelden]</a>";
    }
    ?>

    <?php
    include('functions.php');
    echo 
    connect();

    $user=$_POST['user'];
    $pass=$_POST['pass'];
    $pass=md5($pass);
    $send=$_POST['s'];

    $action=$_GET['action'];
    if(!isset(
    $action)) {
    $action="form";
    }

    if(
    $action=="form") {
    echo 
    '<form action="login.php?action=login" method="post">

    <table width="496" border="0" cellspacing="0" cellpadding="0">
      <tr>
        <td width="154">Username*</td>
        <td width="342"><input type="text" name="user" class="inputs" size="45" /></td>
      </tr>
      <tr>
        <td>Passwort*</td>
        <td><input type="password" name="pass" class="inputs" size="45" /></td>
      </tr>
      <tr>
        <td>&nbsp;</td>
        <td><input type="submit" value="Einloggen" class="submit_register" /><input type="hidden" name="s" value="1" /></td>
      </tr>
    </table>
    </form>'
    ;
    }

    if(
    $action=="login") {
    if((
    $user and $pass)=="") {
    echo 
    "Alle Felder mit einem * sind erfolderlich.<br>";
    }

    $abfrage="SELECT user, pass FROM userdata";

    $ergebnis=mysql_query($abfrage) or die (mysql_error());

    while(
    $row=mysql_fetch_assoc($ergebnis)) {

    if(
    $user == $row['user'] and $pass == $row['pass']) {

    $_SESSION['username'] = $user;

    echo 
    'Login war erfolgreich. Hallo '.$_SESSION['username'].'';
         } 
       }
     }

    if(
    $action=="logout") {

    session_destroy();

    unset(
    $_SESSION['username']);

    echo 
    "<br>Logout war erfolreich!<br>";
    }
    ?>
    Kann mir jemand sagen wie ich das ganze anstellen soll, wäre nett.
    Danke im Voraus!
    Mfg

  • #2
    suche
    PHP-Code:
    if(...){
      echo 
    'login erfolgreich';

    ergänze durch
    PHP-Code:
    else { echo 'nicht erfolgreich'; } 

    Kommentar


    • #3
      ähm... wie meinst du das?

      etwa so?

      PHP-Code:
      if(...) {
      echo 
      "login erfolgreich";
      } else {
      echo 
      "nicht erfolgreich";

      Kommentar


      • #4
        welche if-abfrage aus deinem code habe ich wohl damit gemeint?

        Kommentar


        • #5
          so funktioniert es nicht....
          ich kann mich zwar einloggen aber die Meldung "login nicht erfolgreich" erscheint mit dem login erfolgreich meldung.



          PHP-Code:
          $abfrage="SELECT user, pass FROM userdata";

          $ergebnis=mysql_query($abfrage) or die (mysql_error());

          while(
          $row=mysql_fetch_assoc($ergebnis)) {

          if(
          $user == $row['user'] and $pass == $row['pass']) {

          $_SESSION['username'] = $user;

          echo 
          'Login war erfolgreich. Hallo '.$_SESSION['username'].'';
                } 
                else {
          echo 
          "Login nicht ergolgreich";

             } 
          Zuletzt geändert von sourceforge; 20.10.2006, 16:55.

          Kommentar


          • #6
            weißt du warum das so ist? weil du bei jedem login _alle_ benutzer ausliest und mit der eingabe vergleichst, anstatt mit WHERE eine bedingung einzufügen und somit die anzahl der ausgelesenen datensätze auf 0 (login fehlgeschlagen) oder 1 (erfolgreich) zu reduzieren.

            anderer ansatz:

            überprüfe nach der while schleife, ob $_SESSION['username'] gesetzt wurde. wenn nicht, fehlermeldung ausgeben.

            Kommentar


            • #7
              Session wird gesetzt...

              Kommentar


              • #8
                => login erfolgreich.

                Kommentar


                • #9
                  cool, das funktioniert ... vielen dank!

                  ich weiß nicht wie ich das anstellen soll:
                  weißt du warum das so ist? weil du bei jedem login _alle_ benutzer ausliest und mit der eingabe vergleichst, anstatt mit WHERE eine bedingung einzufügen und somit die anzahl der ausgelesenen datensätze auf 0 (login fehlgeschlagen) oder 1 (erfolgreich) zu reduzieren.

                  Kommentar


                  • #10
                    http://tut.php-q.net/login.html

                    Kommentar


                    • #11
                      Sehr Gut.. vielen dank^^

                      Kommentar

                      Lädt...
                      X