Datum beim Login speichern

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

  • Datum beim Login speichern

    Hallo ich bin neu in Sachen PHP und MySQL,
    ich habe folgendes Problem: Ich habe folgendes Login Script für meine HP möchte gern beim anmelden die Zeit in meiner MySQL DB sichern und sie beim nächsten mal ausgeben damit derjenige weiß wann er sich zuletzt angemeldet hat. Könntet ihr mir einen Rat geben wie ich das mache?
    PHP-Code:
    <?php 
    session_start 
    (); 
    require_once (
    "../../../db/dbconnect.php");
    $connectionid mysql_connect ($dbhost,$dbuser,$dbpass); 
    if (!
    mysql_select_db ("$dbname"$connectionid))

      die (
    "Keine Verbindung zur Datenbank"); 


    $sql "SELECT "
        
    "id, username, vorname, nachname "
      
    "FROM "
        
    "user "
      
    "WHERE "
        
    "(username like '".$_REQUEST["username"]."') AND "
        
    "(passwort = '".md5 ($_REQUEST["passwort"])."')"

    $result mysql_query ($sql); 

    if (
    mysql_num_rows ($result) > 0

    $data mysql_fetch_array ($result); 
      
    $_SESSION["user_id"] = $data["id"]; 
      
    $_SESSION["user_username"] = $data["username"]; 
      
    $_SESSION["user_nachname"] = $data["nachname"]; 
      
    $_SESSION["user_vorname"] = $data["vorname"]; 

      
    header ("Location: ../../../"); 

    else 

      
    header ("Location: index.php?false=1"); 

    ?>
    Für Antworten wäre ich sehr dankbar

  • #2
    Du musst eine neue Spalte anlegen (zB: last_login) und beim Login ein UPDATE machen und den Wert in dieser Spalte aktualisieren.

    In der Location des Headers muss übrigens eine absolute URL stehen. "index.php", "../../.." usw. sind nicht zulässig, auch wenn sie häufig funktionieren (aber nicht immer).

    String-Werte, die du in Datenbankabfragen einbaust, müssen immer escaped werden, da ein Angreifer sonst beliebigen Code einschleusen und Allerlei Schaden anrichten könnte. Im Extremfall wird der Server gehackt und für kriminelle Tätigkeiten missbraucht (zB. Verbreitung von Kinder********************s).

    PHP: SQL Injection - Manual

    Beim Benutzername solltest du kein LIKE verwenden, da sich sonst jeder einloggen kann, der irgendein Passwort irgendeines Users errät.
    Zuletzt geändert von h3ll; 15.01.2011, 15:05.

    Kommentar


    • #3
      hey danke für die antwort nur wo und wie (schreibe) setze ich dieses Update? meine spalte in mysql heißt "letzter_login". und wie geht das mit dem escapen? könnte man den login so jetzt hacken?

      Kommentar


      • #4
        ich habe das "like" durch ein "=" ersetzt, so oder?
        jetzt müssen beide übereinstimmen mit der sql tabelle?!

        Kommentar


        • #5
          Zitat von jeansofive Beitrag anzeigen
          hey danke für die antwort nur wo und wie (schreibe) setze ich dieses Update?
          Nachdem du den Benutzer verifiziert hast.

          Zitat von jeansofive Beitrag anzeigen
          und wie geht das mit dem escapen?
          Ich hab den Link nicht aus persönlichem Spaß gepostet.

          Zitat von jeansofive Beitrag anzeigen
          könnte man den login so jetzt hacken?
          Ja, mit Leichtigkeit.

          Kommentar


          • #6
            ok hab ich geändert mit escape. muss ich das auch auf der seite machen, wo ich neue benutzer hinzufüge? alle unterseiten werden durch eine checkuser.php überprüft ob derjenige auch angemeldet ist und eine gültige session besitzt die ja nur über das login geht und die ist ja geschützt. kannst du mir bitte noch einmal mit dem update helfen? wie schreibe ich das? dafür wäre ich dir sehr sehr dankbar!

            Kommentar


            • #7
              Zitat von jeansofive Beitrag anzeigen
              ok hab ich geändert mit escape. muss ich das auch auf der seite machen, wo ich neue benutzer hinzufüge?
              "String-Werte, die du in Datenbankabfragen einbaust, müssen immer escaped werden" ist doch ziemlich eindeutig, oder?

              Zitat von jeansofive Beitrag anzeigen
              alle unterseiten werden durch eine checkuser.php überprüft ob derjenige auch angemeldet ist und eine gültige session besitzt die ja nur über das login geht und die ist ja geschützt. kannst du mir bitte noch einmal mit dem update helfen? wie schreibe ich das? dafür wäre ich dir sehr sehr dankbar!
              Steht in jedem Grundlagen-Tutorial und auch im MySQL-Handbuch.

              Kommentar


              • #8
                PHP-Code:
                <?php  
                session_start
                ();
                include (
                "../../../db/dbconnect.php");

                $username  $_POST['username'];
                $passwort   $_POST['passwort']; 
                 

                mysql_select_db($dbname);
                 
                $sql "SELECT * FROM user WHERE username= '"mysql_escape_string($username)."' AND passwort= '".md5 (mysql_escape_string($passwort))."'";
                 
                $result mysql_query($sql);  
                 
                if(
                mysql_num_rows($result) > 0)  
                {  
                $data mysql_fetch_array($result);   
                $_SESSION["user_id"]       = $data["id"];  
                $_SESSION["user_username"] = $data["username"];  
                   
                header('Location: ../../../index.php');
                   exit();
                }  
                else  
                {  
                   
                header('Location: index.php');
                   exit();
                }  
                ?>
                ist das so jetzt sicher(er) ?
                oder soll ich anstatt md5 sha1 verwenden?

                Kommentar


                • #9
                  Benutzer mysql_real_escape_string()!
                  Verwende absulote URLs for Location-Header!
                  Prüfe das Ergebnis von mysql_query()!

                  Kommentar


                  • #10
                    Zitat von onemorenerd Beitrag anzeigen
                    Prüfe das Ergebnis von mysql_query()!
                    tue ich dies nicht mit
                    PHP-Code:
                    if (mysql_num_rows($result) > 0
                    ?
                    und wenn nicht, wie muss ich es dann machen?

                    Kommentar


                    • #11
                      Update für Login Zeit in Login Script

                      Hallo

                      ich möchte gerne die Einlogg Zeit eines Users speichern, damit er nachschauen kann wann er sich eingeloggt hat. Leider funktioniert das nicht mit meinem Script. Kann mir jemand sagen wo der Fehler liegt?
                      PHP-Code:
                      <?php  
                      session_start
                      ();
                      include (
                      "../../../db/dbconnect.php");
                      $username  $_POST['username'];
                      $passwort   $_POST['passwort']; 
                      mysql_select_db($dbname);





                      mysql_query("UPDATE user SET letzter_login = '22323232'
                      WHERE id= '"
                      mysql_escape_string($id)."' AND username= '"mysql_escape_string($username)."';






                      $sql = "SELECT FROM user WHERE username'". mysql_escape_string($username)."' AND passwort'".sha1 (mysql_escape_string($passwort))."'"; 
                      $result = mysql_query($sql);  
                      if(mysql_num_rows(
                      $result) > 0)  
                      {  
                      $data = mysql_fetch_array($result);   
                      $_SESSION["user_id"]       = $data["id"];  
                      $_SESSION["user_username"] = $data["username"];
                      header('Location: ../../../');
                         exit();
                      }  
                      else  
                      {  
                         header ("
                      Locationindex.php?false=1"); 
                         exit();
                      }  
                      ?>

                      Kommentar


                      • #12
                        Reicht ein Thread nicht?

                        Kommentar


                        • #13
                          Ein Thread muss reichen! *merge* *verwarn*

                          Kommentar


                          • #14
                            Schon das Syntax Highlighting sagt mir, dass du einen Parse Error bekommst, weil du die Anführungszeichen verwechselst. Die exakte Fehlermeldung zu erwähnen gehört in jedem Forum dazu, das steht auch in den Forenregeln, die du jetzt bitte sofort liest.
                            [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                            Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                            Super, danke!
                            [/COLOR]

                            Kommentar

                            Lädt...
                            X