Problem beim loginscript

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

  • Problem beim loginscript

    hallo ertsmal,
    ich hab mir ein registrierungsscript geschreiben,
    bei dem ein html-formular die daten an eine phpdatei schickt und diese die daten dann in die datenbank einträgt.
    Hier das phpscript:
    PHP-Code:
    <?php 
      
    include("sessionhelpers.inc.php");


    mysql_query(

    "INSERT INTO `users` ( `UserID` , `UserName` , `UserPass` , `UserSession` , `UserMail` , `feld` , `lp` , `Angriff` )  
    VALUES 
                                ('', 
                                 '"
    .$_POST["name"]."', 
                                 md5('"
    .$_POST["pass"]."'), 
                                 NULL, 
                                 '"
    .$_POST["mail"]."',
                                 'index2.html',
                                 '15',
                                 '2')"
    )
    or die(
    mysql_error());
    mysql_close();

    echo 
    "Registrierung abgeschlossen!";
    ?>
    hier das htmlformular:
    PHP-Code:
    <html>
    <
    head>
    </
    head>
    <
    body>
    <
    form method=post action=eintragen.php>
    Username:
      <
    input type=text name=name size=15>
    Passwort:
    <
    input type=password name=pass size=15>
    Email:
    <
    input type=text name=mail size=15>


    <
    input type=submit value=Registrieren!>
    </
    form>
    </
    body>
    </
    html


    und nun mein problem:

    im phpscript wird ja das passwort mit md5() verschlüsselt in der DP gespeichert.
    Aber, wenn ich jetzt versuche, mich mit dem Login script auf meiner seite einzuloggen, werden meine daten als falsch angegeben.
    Wenn ich das mit usern versuche, die ich über phpmyadmin angelegt habe, kann ich mich jedoch einloggen.
    und wenn ich die phpdatei ausführe, kommt auhc immer, registrierung abgeschlossen, und es wird auch ein 32stelliger string als pw gespeichert, aber es geht nicht.
    wer kann mir dabei helfen?
    ich weiß nicht, was ich falsch geschrieben hab.
    Zuletzt geändert von Champ Wasili; 19.03.2008, 16:02.

  • #2
    iche sehe kein Loginscript, daher kann man nichts dazu sagen.

    Kommentar


    • #3
      Ich auch nicht, aber ich kann dir jetzt schon sagen, dass du nicht lange Freude an so einem Skript haben wirst.
      Informiere dich bitte mal mit der Suchmaschine deiner Wahl über "SQL Injections".

      Kommentar


      • #4
        sorry, das login script hab ich vergessen, hier ist es.
        PHP-Code:
        <?
        session_start();
        include 'sessionhelpers.inc.php';


        if (isset($_POST['login']))

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

        if (!logged_in())
            echo '<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>';
        else
            echo '<a href="logout.php">Ausloggen</a>';
        echo '<p /><a href="logged_in.php">Weiter</a>';
        ?>
        in der sessionhelpers.php stehen nur die mysql zugangsdaten.
        und die logout.php löscht nur die sessionid, wenn ncoh was fehlt, einfachg sagen ich poste es dann.
        Gegen sqlinjections wollte ich es schützen, nachdem es überhaupt läuft! wenn sich jemand z.b. adminrechte gibt, aber sich damit nicht einloggen kann, bringt das auch sonderlcih viel, oder?

        Kommentar


        • #5
          Naja, den Inhalt der Funktion check_user müsste man natürlich auch sehen.
          [FONT="Helvetica"]twitter.com/unset[/FONT]

          Shitstorm Podcast – Wöchentliches Auskotzen

          Kommentar


          • #6
            @Champ
            Also erstmal würde ich nicht die MySql Fkt md5 verwenden, sondern diejenige von PHP. Sonst musst du das Passwort trotzdem noch mittels mysql_real_escape_string() entschärfen, weil es ja MySql ist, das die Daten erst zum Hash macht.
            Und ja die fragliche Funktion sollte man auch noch zu Gesicht bekommen
            Und ausserdem solltest du obengenannte mysql-Fkt auf alle Usereingaben anwenden, die in die Datenbank kommen.

            Gruss

            tobi
            Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

            [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
            Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

            Kommentar


            • #7
              @Champ
              Wirklich dein eigener Code, den du geschrieben hast? Der Code kommt mir irgendwie bekannt vor. Und da du nicht der dort genannte User bist habe ich so meine Zweifel.
              Darum gehst du jetzt ins richtige Forum **move** zu Tutorials
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                @ jahloves, ja es ist das eben genannte tutorial. ich hatte es nur hier geppstet, weil das loginscript ja läuft, nur das regformular hab ich aber selbstgeschrieben!
                Hier die check_uer
                PHP-Code:
                function check_user($name$pass)
                {
                    
                $sql="SELECT UserId
                    FROM users
                    WHERE UserName='"
                .$name."' AND UserPass=MD5('".$pass."')
                    LIMIT 1"
                ;
                    
                $resultmysql_query($sql) or die(mysql_error());
                    if ( 
                mysql_num_rows($result)==1)
                    {
                        
                $user=mysql_fetch_assoc($result);
                        return 
                $user['UserId'];
                    }
                    else
                        return 
                false;

                Kommentar


                • #9
                  Nachdem du die genannten Tipps hier umgesetzt hast (was bis jetzt offensichtlich nicht erfolgt ist), prüfst du bitte mal, ob dein Registrierungsscript den korrekten Hash in der DB gespeichert hat. Die Antwort bitte hier posten, falls du dann die Lösung noch nicht finden solltest.

                  Kommentar


                  • #10
                    ich kapier irgendwie nicht, wie ich
                    mysql_real_escape_string() einbauen muss.
                    etwa so:
                    PHP-Code:
                    <?php 
                      
                    include("sessionhelpers.inc.php");


                    mysql_query(

                    "INSERT INTO `users` ( `UserID` , `UserName` , `UserPass` , `UserSession` , `UserMail` , `feld` , `lp` , `Angriff` )  
                    VALUES 
                                                ('', 
                                                 '"
                    .$_POST["name"]."', 
                                                 mysql_real_escape_string(md5('"
                    .$_POST["pass"]."')), 
                                                 NULL, 
                                                 '"
                    .$_POST["mail"]."',
                                                 'index2.html',
                                                 '15',
                                                 '2')"
                    )
                    or die(
                    mysql_error());
                    mysql_close();

                    echo 
                    "Registrierung abgeschlossen!";
                    ?>

                    Kommentar


                    • #11
                      etwa so:
                      Nein
                      PHP-Code:
                      //so ist das eine MySql-Funktion
                      $sql "INSERT INTO tabelle (uName) VALUES('mysql_real_escape_string(blabla)')";
                      //korrekt wäre aber eine PHP-Funktion 
                      $sql "INSERT INTO tabelle (uName) VALUES('".mysql_real_escape_string('blabla')."')"
                      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                      Kommentar

                      Lädt...
                      X