Ankündigung

Einklappen
Keine Ankündigung bisher.

md5 Login

Einklappen

Neue Werbung 2019

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

  • md5 Login

    Hallo Comm,

    ich hab ein Problem und zwar habe ich ein Register und Login Script geschrieben, welche ohne md5 wunderbar funktionieren. Allerdings möchte ich gerne die passwörter md5 verschlüsselt in der db liegen haben.

    Hier der Code von der register.php:

    PHP-Code:
    <?php
    if(isset($_POST['senden'])){
        
    $username mysql_real_escape_string(strtolower($_POST['username']));
        
    $pw mysql_real_escape_string(md5($_POST['pw']));
        
    $pw2 mysql_real_escape_string(md5($_POST['pw2']));
        
    $email $_POST['email'];

        if (empty(
    $username) OR empty($pw) OR empty($pw2) OR empty($email)) {
            echo 
    "Fülle alle Felder aus um dich zu registrieren.";
        }
        else {
            if (
    $pw != $pw2) {
                echo 
    "Deine Passwörter stimmen nicht überein.";
            }
            else {
                include 
    'connect.php';

                
    $control 0;
                
    $abfrage "SELECT username FROM benutzer WHERE username = '$username'";
                
    $ergebnis mysql_query($abfrage);
                while (
    $row mysql_fetch_object($ergebnis)) {
                    
    $control++;
                }

                if (
    $control != 0) {
                    echo 
    "Der Benutzername ist bereits vorhanden. Versuche es mit einem anderen erneut.";
                }
                else{
                    
    $eintrag "INSERT INTO benutzer(username, password, email) VALUES ('$username', '$pw', '$email')";
                    
    $eintragen mysql_query($eintrag);

                    if (
    $eintragen == true) {
                        echo 
    "Herzlichen Glückwunsch. Dein Konto wurde erfolgreich angelegt. <a href=\"index.php\">Jezt einloggen</a>";
                    }
                    
    mysql_close($connect);
                }
            }
        }
    }

    ?>
    und hier von der login.php:

    PHP-Code:
    <?php

        $username 
    mysql_real_escape_string($_POST['username']);
        
    $pw mysql_real_escape_string(md5($_POST['pw']));

        if (!empty(
    $username) AND !empty($pw)) {
            include 
    'connect.php';


            
    $abfrage2 "SELECT * FROM benutzer WHERE username = '$username' AND password = '$pw'";
            
    $ergebnis2 mysql_query($abfrage2);

            
    $usercheck mysql_num_rows($ergebnis2);

            if (
    $usercheck == true) {

                
    $_SESSION['username'] = $username;

                
    $abfrage3 "INSERT INTO benutzer_online(username) VALUES ('$username')";
                
    $ergebnis3 mysql_query($abfrage3);

                if (
    $ergebnis3 == true) {
                    
                echo 
    "Erfolg!";
                
    ?>
                <script type="text/javascript">
                    alert("Du bist nun eingeloggt...");
                    window.location.href = "forum.php";
                </script>
                
                <?php
                
    }
            }
            else {
                echo 
    "Dein Benutzername und Passwort stimmen nicht überein.";
            }
        }
        else {
            echo 
    "Du musst einen Benutzernamen und ein Passwort eingeben.";
        }

    ?>
    Ich habe jetzt einfach md5 auf die Variablen angewandt. Das Passwort wird wunderbar in der db md5 angezeigt, allerdings bekomme ich jedes mal wenn ich das passwort richtig eingebe "Dein Benutzername und Passwort stimmen nicht überein".

    Könnt ihr mir einen Tipp geben?!
    Danke im Vorraus


  • #2
    so vielleicht ))

    Code:
    $pw = mysql_real_escape_string(md5($_POST['pw']));

    Kommentar


    • #3
      ja so habe ich es, aber klappt leider nicht. Es muss an etwas anderem liegen.. :/

      Kommentar


      • #4
        weil mysql num_rows einen int zurückliefert und keinen boolean wert. Hätte man auch selber draufkommen können.

        Kommentar


        • #5
          Zweiter versuch )
          Code:
           $username = mysql_real_escape_string( strtolower($_POST['username']) );

          Kommentar


          • #6
            Oder das beachten was ich gesagt habe. (Es sei denn, du willst noch bis Nacht dranhocken).

            Kommentar


            • #7
              aber mysql num_rows ist doch immer true außer der wert ist 0 oder nicht?! und 0 ist er ja nur wenn er kein passenden eintrag gefunden hat

              Kommentar


              • #8
                Falsch, bevor wir dir hier dein Problem vorkauen, informier dich genau, was mysql num_rows macht, dann komm hier wieder her.

                Kommentar


                • #9
                  wieso klappts denn dann bitte ohne md5 verschlüsselung ?

                  Kommentar


                  • #10
                    Wieso benutzt du bei der Registrierung kein *real_escape* und beim Login doch?
                    Bei den Paßwörtern kannst du die *real_escape* Funktion weglassen, wenn du die md5 benutzt!

                    Kommentar


                    • #11
                      das ist eine gute frage, danke für den hinweis. habe es jetzt in der registrierung ergänzt. allerdings habe ich immer noch keine lösung für das md5 problem :/

                      Kommentar


                      • #12
                        Also hier noch ein paar Anmerkungen von mir:
                        zu aller erst einmal ist mysql_* mitterweile deprecated und wird aber PHP 5.6 entfernt.

                        http://www.php.net/manual/de/migration55.deprecated.php
                        Nutze stattdessen PDO (http://de1.php.net/manual/de/class.pdo.php)

                        LG
                        https://github.com/Ma27
                        Javascript Logic is funny:
                        [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

                        Kommentar


                        • #13
                          Als Hinweis, damit du nicht unntigerweise ein veraltetes Funktionsset erlernst:

                          Die MySql-Erweiterung(alle mysql_* Funktionen) ist veraltet und wird nicht mehr weiterentwickelt. Verwende MySqli oder PDO! Beide bieten erweiterte Funktionen und Sicherheitsfeatures an, so z.B. prepared/parameterized Queries.

                          Außerdem solltem md5 bzw. sha1 nicht mehr verwendet werden. PHP bietet eine eigene API für das hashen von Passwörter an.
                          Siehe:
                          http://www.php.net/manual/de/faq.passwords.php
                          http://www.php.net/manual/de/book.password.php

                          edit: zulange mit dem Suchen nach dem ersten Link beschäftigt gewesen ;(
                          Zitat von nikosch
                          Naja, anscheinend spricht die Steckdose kein HTTP. LOL

                          Kommentar


                          • #14
                            alles klar danke euch, ich werds mir gleich mal ansehen

                            Kommentar


                            • #15
                              Ein
                              PHP-Code:
                               include 'connect.php'
                              nach einem
                              PHP-Code:
                              mysql_real_escape_string 
                              ist keine gute Idee

                              Richtig debuggen

                              1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
                              2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(-1);
                              3. Man verwendet ini_set('display_errors', true); damit die Fehler auch angezeigt werden.
                              4. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
                              5. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysqli_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
                              6. Schritt 5 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
                              7. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
                              8. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
                              9. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.
                              Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

                              Kommentar

                              Lädt...
                              X