Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] login-session.

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] login-session.

    ich hoffe, ein "profi" kann mir hierbei helfen:

    finde einfach nicht den fehler, denn die anbindung klappt und den user findet er auch, nur das passwort nicht. zur probe hab ich die verschlüsselung erstmal draussen gelassen, auch das funktioniert nicht.

    also:

    db: test.
    tabelle: test.
    felder sind: id, user und pass.

    connect.inc.php:
    Code:
    <?php
    $dbHost = "localhost";
    $dbUser = "root";
    $dbPass = "";
    $dbName = "test";
    $connect = @mysql_connect($dbHost, $dbUser, $dbPass) or die("Konnte keine Verbindung zum Datenbankserver aufbauen!");
    $selectDB = @mysql_select_db($dbName, $connect) or die("Konnte die Datenbank $dbName nicht auswählen!");
    ?>
    index.php
    Code:
    <?php
          session_start();
          require("connect.inc.php");
    ?>
    
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
    <head><title>Login</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
    <link rel="stylesheet" type="text/css" href="style.css">
    </head>
    
    <body topmargin=150>
    
    <?php if(!isset($_POST['submit'])) { ?>
    
      <form action="<?php $PHP_SELF ?>" method="post">
      <table width="400" bgcolor="#000000" border="0" cellpadding="5" cellspacing="1" align="center">
        <tr>
          <td bgcolor="#e7e7e7" align="center" colspan="2">
         Bitte erst anmelden
          </td>
        </tr>
        <tr>
          <td width="170" bgcolor="#e7e7e7">Name</td>
          <td width="230" bgcolor="#ffffff"><input type="text" name="username" size="20" class="input"<?php if($_POST['username'] != "" ) {echo ' value="'.$_POST['username'].'"';} ?>></td>
        </tr>
        <tr>
          <td width="170" bgcolor="#e7e7e7">Passwort</td>
          <td width="230" bgcolor="#ffffff"><input type="password" name="password" size="20" class="input"></td>
        </tr>
        <tr>
          <td bgcolor="#e7e7e7" align="center" colspan="2">
          <input type="submit" name="submit" value="Anmelden" class="button">
          </td>
        </tr>
      </table>
      </form>
    
    <?php
      }elseif(!$_POST['username'] || $_POST['username'] == "") {
        echo '<p align="center">Einen Benutzernamen brauchen wir schon ;-)
    
    Zurück</p>';
      }elseif(!$_POST['password'] || $_POST['password'] == "") {
        echo '<form action="index.php" method="post">';
        echo '<p align="center">Ein Passwort brauchen wir schon ;-)
    
    ';
        echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
        echo '<input type="submit" name="zurueck" value="Zurück">';
        echo '</p>';
        echo '</form>';
      }else{
        # $password = md5($password);
        $query = @mysql_query("SELECT user, pass FROM test WHERE user = '".$_POST['username']."'") or die('Select ist fehlgeschlagen!');
        $result = @mysql_fetch_array($query) or die('<p align="center">Sorry, aber dieser Benutzername existiert nicht!
    Zurück</p>');
        echo $_POST['$password'];
        print_r($result);
        if(($_POST['$password']) != $result['pass']){
          echo '<form action="index.php" method="post">';
          echo '<p align="center">Sorry, aber dieses Passwort ist falsch!
    
    ';
          echo '<input type="hidden" name="username" value="'.$_POST['username'].'">';
          echo '<input type="submit" name="zurueck" value="Zurück"></p>';
          echo '</form>';
          die;
        }else{
          $user = $result['user'];
          session_register('user');
          echo '<p align="center">Login erfolgreich! :-)
    
    Weiter</p>';
        }
      }
    ?>
    </body>
    </html>
    finde einfach den fehler nicht! weis jemand rat?

    d.e.n.k.e.r.i.n


  • #2
    Hallo!

    Poste bitte das nächste Mal nur den Teil, der für dein Problem relevant ist (dazu gehört z.B. nicht das ganze HTML)!

    Danke, KMAssS

    Kommentar


    • #3
      Code:
      $password = md5($password);
      Müsste das nicht heißen
      Code:
      $password = md5($_POST['password']);
      KMAssS

      Kommentar


      • #4
        kmasss, ich hab das md5 doch kommentiert! aber danke das du mir beistehst!

        Kommentar


        • #5
          Zitat von d.e.n.k.e.r.i.n
          kmasss, ich hab das md5 doch kommentiert! aber danke das du mir beistehst!
          Wenn du die Passwörter in der DB md5-verschlüsselt hast und du die Verschlüsselung im Script deaktivierst, kann das ja gar nicht gehen.

          Und wenn du register_globals auf OFF gestellt hast (was ich vermute, da du an anderen Stellen ja auch $_POST['user'] usw verwendest), musst du auch das Passwort mit $passwort = md5($_POST['passwort']); speichern, da du direkt über $passwort sonst nich darauf zugreifen kannst!

          KMAssS

          Kommentar


          • #6
            jein! wie ich oben schon erwähnt, habe die codierung rausgenommen, sprich auch das passwort in der db unverschlüsselt liegen.

            dennoch funkt es nicht!

            mit den register_globals off hast du nat. recht.

            verdammt ich häng hier jetzt schon den ganzen tag dran, und mit $_POST['password'] bekomm ich auch das richtig vom input-feld geliefert, trotzdem schreibt er mir, dass das pw falsch ist, ich verstehs nicht.........

            Kommentar


            • #7
              Re: login-session.

              Zitat von d.e.n.k.e.r.i.n
              ich hoffe, ein "profi" kann mir hierbei helfen:
              Du hast die Beschreibung des Profi Forums falsch verstanden. Hier stellen Profis Fragen.

              Ich habe Dein Script mal eingedampft:
              Code:
              $query = @mysql_query("SELECT user, pass FROM test WHERE user = '".$_POST['username']."'") or die('Select ist fehlgeschlagen!');
              
              $result = @mysql_fetch_array($query) or die('falscher username');
              echo $_POST['$password']; # Falsch!
              print_r($result);
              if(($_POST['$password']) != $result['pass']) # auch falsch!
              {
              # PW falsch
              }
              else
              {
                    $user = $result['user'];
                    session_register('user');
              # Login korrekt.
              }
              ?>
              Das ist reichlich umständlich und falsch. Sowas $_POST['$password'] ist sinnfrei

              Ob username und passwort stimmt, kann man mit einem Query abfragen:
              Code:
              $sql = "SELECT user, pass FROM test WHERE user = '" . 
                mysql_escape_string ($_POST['username']) . 
                "' AND pass = md5('" . mysql_escape_string ($_POST['password']) . "')";
              
              # Beachte, daß die MD5 Funktion auch in MySQL existiert. mysql_escape_string() dient dazu, SQL Injektionen zu verhindern.
              
              $res = @mysql_query($sql);
              
              if (! $res OR mysql_num_rows ($res) != 1)
              {
              # benutzername u/o password falsch
              # Anzeige des Loginformulars
              }
              else
              {
              # User ist authentifiziert
              $_SESSION['username'] = $_POST['username'];
              session_write_close()
              
              ## EDIT (Klammer vergessen)
              header ('Location: http://' . $_SERVER['SERVER_NAME'] . dirname ($_SERVER['SCRIPT_NAME']) . '/geloggt.php?' . SID);
              exit;
              }
              ?>

              Kommentar


              • #8
                Re: login-session.

                Zitat von meikel
                Du hast die Beschreibung des Profi Forums falsch verstanden. Hier stellen Profis Fragen.
                warum ich bin doch profi :P *späßle.natürlich*

                o.k. den ersten teil hab ich verstanden!

                Zitat von meikel
                Code:
                $res = @mysql_query($sql);
                
                if (! $res OR mysql_num_rows ($res) != 1)
                {
                # benutzername u/o password falsch
                # Anzeige des Loginformulars
                }
                else
                {
                # User ist authentifiziert
                $_SESSION['username'] = $_POST['username'];
                session_write_close()
                header ('Location: http://' . $_SERVER['SERVER_NAME'] . dirname ($_SERVER['SCRIPT_NAME'] . '/geloggt.php?' . SID);
                exit;
                }
                ?>
                das gibt mir noch ein wenig zu denken, aber ich werde mir die abfragen und entsprechenden funktionen, die du hier mit dazugenommen hast versuchen zu verstehen, und evtl. noch mal rückfragen. vielen dank meikel!!

                d.e.n.k.e.r.i.n

                Kommentar


                • #9
                  Re: login-session.

                  Zitat von d.e.n.k.e.r.i.n
                  ... das gibt mir noch ein wenig zu denken, aber ich werde mir die abfragen und entsprechenden funktionen, die du hier mit dazugenommen hast versuchen zu verstehen, und evtl. noch mal rückfragen.
                  Aber nur das erfragen, was nicht im Handbuch steht! <ggg>

                  Beachte bitte mein EDIT. Ich hatte im Script eine schließende Klammer vergessen...

                  Kommentar


                  • #10
                    Re: login-session.

                    Zitat von meikel
                    Aber nur das erfragen, was nicht im Handbuch steht! <ggg>
                    ...du bist mir ja einer! peaze
                    Zitat von meikel
                    Beachte bitte mein EDIT. Ich hatte im Script eine schließende Klammer vergessen...
                    danke und schönen abend noch.....

                    Kommentar


                    • #11
                      es funktioniert nicht, bald geb ich wirklich auf!!!?

                      obwohl das passwort richtig im array liegt, will es nicht funken, und ich hab keine ahnung warum!!!!!!!???

                      Kommentar


                      • #12
                        Zitat von d.e.n.k.e.r.i.n
                        es funktioniert nicht, bald geb ich wirklich auf!!!?
                        obwohl das passwort richtig im array liegt, will es nicht funken, und ich hab keine ahnung warum!!!!!!!???
                        Solche Fehlerbeschreibungen lese ich ungern.

                        Vorschlag zur Güte: Du überarbeitest Dein Script und nutzt immer schön fleißig die Funktionen phpinfo() und print_r(), damit Du siehst, welche Variablen wie gesetzt sind.

                        Ich schließe das Thema erst mal ab.

                        Kommentar

                        Lädt...
                        X