[Frage] login page

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

  • #16
    hallo

    entschuldigt bitte mein post von vorher!!

    klar hab ich ansätze gefunden: ich habe es folgendermaßen realisiert: doch leider funktioniert es nicht und ich weiss nicht warum!!
    hier ist meine login seite:

    <form method="post" action="login.php">
    <label>Benutzername:</label><input name="username" type="text">
    <br>
    <label>Passwort: </label><input name="userpass" type="password" id="userpass">
    <br>
    <input name="login" type="submit" id="login" value="Einloggen">
    </form>
    <?
    include 'auth.php';

    if (isset($_POST['login']))
    {
    $userid=check_user($_POST['username'], $_POST['userpass']);
    if ($userid!=false)
    login($userid);
    else
    echo 'Ihre Anmeldedaten waren nicht korrekt!';
    }

    ?>
    und hier meine auth.php:

    <?
    $server = "localhost";
    $user = "root";
    $pass = "";
    $datenbank = "test";
    $conn = @mysql_connect($server, $user, $pass);


    mysql_select_db($datenbank, $conn);


    function check_user($name, $pass)
    {
    $sql="SELECT customers_id
    FROM customers
    WHERE customers_email_address='".$name."' AND customers_password=MD5('".$pass."')
    LIMIT 1";
    $result= mysql_query($sql) or die(mysql_error());
    if ( mysql_num_rows($result)==1)
    {
    $user=mysql_fetch_assoc($result);
    return $user['customers_id'];
    }
    else
    return false;
    }

    also der punkt ist ich bekomme immer den output das die angaben des user falsch sind --> verifizierung klappt nicht!!!!

    Tobi vielen Dank für deine Hilfe!!!!!

    Kommentar


    • #17
      was steht denn so alles in der datenbank?

      Kommentar


      • #18
        Hast du den Test-Benutzer in der Datenbank manuell angelegt? Falls ja - hast du das Passwort als Klartext gespeichert oder mit md5 gehasht? Wäre nicht das erste Mal, dass es daran scheitern würde...
        Nieder mit der Camel Case-Konvention

        Kommentar


        • #19
          es gibt mehrer benutzer in der datenbank.
          die datenbank wurde allerdings von einem shop gefüllt.
          jetzt benötigen die shopuser zugriff auf einen andern bereich des webservers.
          hier mal ein user aus der datenbank:
          Benutzername: claus@biercher.eu
          Passwort : baa0dad4dd6d5b685681afff10515f9b:73

          könnt mir vorstellen das es nicht md5 verschlüsselt ist, kannman das feststellen?

          Kommentar


          • #20
            Original geschrieben von ClausBiercher
            könnt mir vorstellen das es nicht md5 verschlüsselt ist, kannman das feststellen?
            Ja - in dem man das bekannte Passwort mit MD5 verschlüsselt, und vergleicht.
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #21
              was macht die ":73" am ende?
              wie heißen die felder in der db?
              welche id hat dein test-user? was passiert, wenn ein user die id "0" hat?

              Kommentar


              • #22
                Das könnte durchaus md5 verschlüsselt sein. Jedoch wären die letzten drei Zeichen :73 dann angehangen worden, beispielsweise als eine zusätzliche Sicherheitsmaßnahme vergleichbar mit einem salt oder nonce. Das können wir dir aber ohne weiteres nicht sagen, es sei denn, jemand kennt das System.
                Nieder mit der Camel Case-Konvention

                Kommentar


                • #23
                  das ist die funktion die im shop das password verifiziert:

                  function tep_validate_password($plain, $encrypted) {
                  if (tep_not_null($plain) && tep_not_null($encrypted)) {
                  // split apart the hash / salt
                  $stack = explode(':', $encrypted);

                  if (sizeof($stack) != 2) return false;

                  if (md5($stack[1] . $plain) == $stack[0]) {
                  return true;
                  }
                  }

                  return false;
                  }

                  könnt ihr daraus erkenn wie ich meine verifizierung gestallten muss?

                  Kommentar


                  • #24
                    Dann musst du das deiner selbst geschriebenen Funktion übergebene Passwort genauso verifizieren, wie es die Funktion tep_validate_password() macht.
                    Nieder mit der Camel Case-Konvention

                    Kommentar


                    • #25
                      und wie soll dasdann aussehen?
                      die funktion sitzt in anderen verzeichnissen und hat adrer includes.

                      da sin doch variablen drin die ich nicht füllen kann, wie soll das gehen?

                      danke für die bisher gute hilfe (ich bin doch froh das es dieses forum gibt!!!)

                      Kommentar


                      • #26
                        Du kannst es dir auch einfach machen und die Funktion kopieren. Davon mal abgesehen dürfte es ja eigentlich nicht das Problem sein, die Datei, die diese Funktion beinhaltet, per include() einzubinden, oder?

                        da sin doch variablen drin die ich nicht füllen kann, wie soll das gehen?
                        Wie meinst du das? Die Funktion erwartet 2 Parameter: Einmal das von Benutzer, der sich einzuloggen versucht, übergebene Passwort (demnach als Klartext) und das Passwort, das zu dem passenden Benutzernamen in der Datenbank abgelegt ist (also das gehashte).
                        Nieder mit der Camel Case-Konvention

                        Kommentar


                        • #27
                          ich bekomm es nicht hin,

                          zuerst muss ich doch das passwort des eingebenden users anhand seiner E-mail addresse in eine variable einlesen, damit ich das dann mit der o.g. funktion vergleichen kann. richtig?

                          wie bekomm ich denn zwei funktionen miteinander verkettet?
                          also so wie ich das seh bekomm ich vom login e-mail und pass in den variable $name und $pass zu der funktion check_user:

                          if (isset($_POST['login']))
                          {
                          $userid=check_user($_POST['username'], $_POST['userpass']);
                          if ($userid!=false)
                          echo $result;
                          else
                          echo $result;
                          }

                          jetzt muss ich erst in die sql datenbank um das verschlüsselte passwort zu holen passend zu der e-mail die in der variable $name steht

                          $sql = "SELECT customers_password FROM customers WHERE customers_email_address='$name'";
                          $result = mysql_query($sql);

                          dann muss das verschlüsselte passwort $result mit dem passwort welches eingegeben wurde $pass verglichen werden.

                          function tep_validate_password($pass $result) {
                          if (tep_not_null($pass) && tep_not_null($result)) {
                          // split apart the hash / salt
                          $stack = explode(':', $result);

                          if (sizeof($stack) != 2) return false;

                          if (md5($stack[1] . $pass) == $stack[0]) {
                          return true;
                          }
                          }

                          return false;
                          }

                          und dann muss der zugang gewährt werden, ich bekomm das nicht hin!!

                          Kann mir bitte jemand helfen!!

                          ich dreh mich im kreis, leider kann ich php nicht, aber ich muss dieses blöde login haben

                          danke

                          Kommentar


                          • #28
                            Nein.
                            Der Benutzer gibt beim Login seinen Benutzernamen und sein Passwort ein. Um das Passwort kümmerst du dich erstmal gar nicht, denn zuallerst startest du eine Anfrage an die Datenbank und holst dir das passende gehashte Passwort zu dem eigegebenen Benutzernamen (Schlägt das fehl, wurde ein nicht vorhandener Benutzername eingegeben - das ist jetzt aber unwichtig).
                            Jetzt hast du also den eingegebenen Benutzernamen, das eingegebene Passwort und das gehashte Passwort, das in der Datenbank abgelegt ist. Und genau jetzt kommt die tep_validate_password-Funktion ins Spiel.

                            Mal ein kleines Beispiel zur Veranschaulichung:
                            PHP-Code:
                            $l_username $_POST['username']; // eingegebener benutzername
                            $l_password $_POST['password']; // eingegebenes passwort

                            // das passwort zum benutzernamen abrufen
                            $result mysql_query("SELECT password
                                            FROM users
                                            WHERE username = '" 
                            mysql_real_escape_string($l_username) . "'");
                                || die(
                            mysql_error());

                            // existiert der benutzername?
                            if (mysql_num_rows($result) == 1)
                            {
                                
                            $md5_password mysql_result($result0);
                            }
                            else
                            {
                                
                            // benutzer existiert nicht
                            }

                            if (
                            tep_validate_password($l_password$md5_password))
                            {
                                
                            // herzlichen glueckwunsch
                            }
                            else
                            {


                            Zuletzt geändert von Griecherus; 08.02.2007, 15:58.
                            Nieder mit der Camel Case-Konvention

                            Kommentar


                            • #29
                              ich bekomm das nicht zusammen.
                              wie muss denn die funktion check_user aussehen?
                              und wie bekomm ich im anschluss die funktion tep_validate_password angesprochen?

                              kannst du mir einen codetip geben?

                              Kommentar


                              • #30
                                Siehe mein letztes Posting, hab's editiert.
                                Nieder mit der Camel Case-Konvention

                                Kommentar

                                Lädt...
                                X