Ankündigung

Einklappen
Keine Ankündigung bisher.

Datenbankabfrage & Login

Einklappen

Neue Werbung 2019

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

  • Datenbankabfrage & Login

    Hallo zusammen,

    quäle mich grade etwas durch php das heisst bin noch relativer Anfänger in der Sprache, wobei ich diverse andere Programmiersprachen beherrsche.

    So nun zu meiner frage. Ich habe Probleme mit meinem loginscript ( vor allem beim schreiben des Timestamps. Das will einfach nicht. Könnt ihr mit weiterhelfen???

    Danke im vor raus!




    <?php
    session_start();

    //konfiguration und verbindungsdaten holen
    include_once('config.inc.php');
    include_once('connect.inc.php');

    //prüfen, ob die eingabefelder ausgefüllt wurden
    if(empty($_POST['u_name']) || empty($_POST['u_pass']))
    {
    //wenn sie nicht ausgefüllt wurden
    echo 'es wurden nicht alle relevanten felder ausgefüllt';
    exit();
    }
    //wenn sie ausgefüllt wurden
    else
    {
    //eine SQL-abfrage vorbereiten und sie abschicken
    $sql = "SELECT id,
    user,
    passwort,
    LETZTER_LOGIN

    FROM Userdaten
    WHERE user = '".mysql_real_escape_string($_POST['u_name'])."'
    AND passwort = '".($_POST['u_pass'])."'
    ";

    $result = mysql_query($sql) or die(mysql_error());

    //prüfung, ob genau eine der spalten mit der eingabe überein stimmt
    if(mysql_num_rows($result) != 1)
    {
    //wenn nicht übereinstimmt
    echo 'Benutzername oder Passwort falsch';
    exit();
    }
    //wenn übereinstimmt
    else
    {
    //eine session "logged" auf TRUE setzen
    //eine session mit dem usernamen erstellen
    $_SESSION['logged'] = TRUE;
    $_SESSION['u_name'] = $_POST['u_name'];

    $query = mysql_query("SELECT letzter_login FROM `Userdaten` WHERE id = '$id'");
    $daten = mysql_fetch_object($query);
    $regdate = $daten->regdate;
    $query = mysql_query("UPDATE `user` SET `regdate` = '$regdate`, lastlogin` = NOW() WHERE `id` = '$id'");






    //auf die geschützte datei weiterleiten
    header('location: intern.php');
    exit();
    }
    }


    $query = mysql_query("SELECT letzter_login FROM `Userdaten` WHERE id = '$id'");
    $daten = mysql_fetch_object($query);
    $regdate = $daten->regdate;
    $query = mysql_query("UPDATE `user` SET `regdate` = '$regdate`, lastlogin` = NOW() WHERE `id` = '$id'");


    ?>

  • #2
    PHP-Code:
    session_start();

    //konfiguration und verbindungsdaten holen
    include_once('config.inc.php');
    include_once(
    'connect.inc.php');

    //prüfen, ob die eingabefelder ausgefüllt wurden
    if (empty($_POST['u_name']) || empty($_POST['u_pass'])) {
    //wenn sie nicht ausgefüllt wurden
        
    echo 'es wurden nicht alle relevanten felder ausgefüllt';
        exit();
    }
    //wenn sie ausgefüllt wurden 
    #############                 1.                         ############
    else {
    //eine SQL-abfrage vorbereiten und sie abschicken
        
    $sql "SELECT id,
    user,
    passwort,
    LETZTER_LOGIN

    FROM Userdaten
    WHERE user = '" 
    mysql_real_escape_string($_POST['u_name']) . "'
    AND passwort = '" 
    . ($_POST['u_pass']) . "'
    "
    ;
    #############                 2.                         ############
        
    $result mysql_query($sql) or die(mysql_error());

    //prüfung, ob genau eine der spalten mit der eingabe überein stimmt
        
    if (mysql_num_rows($result) != 1) {
    //wenn nicht übereinstimmt
            
    echo 'Benutzername oder Passwort falsch';
            exit();
        }
    //wenn übereinstimmt
        
    else {
    //eine session "logged" auf TRUE setzen
    //eine session mit dem usernamen erstellen
            
    $_SESSION['logged'] = TRUE;
            
    $_SESSION['u_name'] = $_POST['u_name'];

            
    $query mysql_query("SELECT letzter_login FROM `Userdaten` WHERE id = '$id'");
            
    $daten mysql_fetch_object($query);
            
    $regdate $daten->regdate;
            
    $query mysql_query("UPDATE `user` SET `regdate` = '$regdate`, lastlogin` = NOW() WHERE `id` = '$id'");






    //auf die geschützte datei weiterleiten
            
    header('location: intern.php');
            exit();
        }
    }

    #############                 3.                         ############
    $query mysql_query("SELECT letzter_login FROM `Userdaten` WHERE id = '$id'");
    $daten mysql_fetch_object($query);
    $regdate $daten->regdate;
    $query mysql_query("UPDATE `user` SET `regdate` = '$regdate`, lastlogin` = NOW() WHERE `id` = '$id'"); 
    1.
    Unnötiges else, http://programming-php.net/clean-code/guard-clauses/

    2.
    Die mysql_* Erweiterung ist veraltet und wird wohl in der nächsten PHP-Version entfernt. Zudem ist deine Query anfällig für SQL-Injections.
    Durch einen Wechsel auf mysqli_* oder PDO greifst du aufdie modernere API zu und hast die Möglichkeiten Prepared Statements zu benutzen die gegen Injections wirken.
    Ich persönlich bevorzuge PDO, schönes Tutorial: http://www.peterkropff.de/site/php/pdo.htm

    3.
    Bis an diese Stelle läuft das Script nicht, hast ja innerhalb der IF-Struktur exit() aufgerufen.
    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

    Kommentar


    • #3
      Hier
      PHP-Code:
      $result mysql_query($sql) or die(mysql_error()); 
      benutzt du mysql_error, warum also nicht auch hier
      PHP-Code:
      $query mysql_query("SELECT letzter_login FROM `Userdaten` WHERE id = '$id'"); 
      und hier
      PHP-Code:
      $query mysql_query("UPDATE `user` SET `regdate` = '$regdate`, lastlogin` = NOW() WHERE `id` = '$id'"); 
      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


      • #4
        Wow. Danke!! Werde ich erstmal so umsetzen PHP ist komisch

        Kommentar


        • #5
          Zitat von next87 Beitrag anzeigen
          PHP ist komisch
          Nö, wenn man es einmal verstanden hat
          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


          • #6
            PHP ist komisch
            Begründung???

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

            Kommentar


            • #7
              Zitat von Ma27 Beitrag anzeigen
              Begründung???
              Schau dir seinen Code an, dann hast du die Begründung.

              Kommentar


              • #8
                @erc,

                Schau dir seinen Code an, dann hast du die Begründung.
                Achso und ich dachte die Aussage sei pauschal

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

                Kommentar


                • #9
                  kann man so sagen, php ist komisch weil ich noch nicht so recht damit klar komme...Aber aller Anfang ist schwer..

                  Kommentar


                  • #10
                    allerdings so wirklich funktionieren will es nicht...Einen Debug Modus hätte etwas ^^

                    Kommentar


                    • #11
                      PHP-Code:
                      ini_set('display_errors'1); 
                      An den Dateianfang schreiben um Fehler anzeigen zu lassen.

                      allerdings so wirklich funktionieren will es nicht...
                      Darunter kann ich mir so spontant nicht viel vorstellen.
                      [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                      [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                      Kommentar


                      • #12
                        sowas habe ich gebraucht :P super...zumindest funktioniert dieser Code jetzt..Nun geht es weiter die Geschichte mithilft von PDO umzuschreiben

                        Kommentar


                        • #13
                          brauche nochmal eure Unterstützung

                          versuche einen neuen Benutzer anzulegen:

                          <?php
                          ini_set('display_errors', 1);

                          //konfiguration und verbindungsdaten holen
                          include_once('config.inc.php');
                          include_once('connect.inc.php');

                          $username = $_POST["username"];
                          $passwort = $_POST["passwort"];
                          $passwort2 = $_POST["passwort2"];

                          if($passwort != $passwort2 OR $username == "" OR $passwort == "")
                          {
                          echo "Eingabefehler. Bitte alle Felder korekt ausfuellen. <a href=\"registrierung.html\">Zurück</a>";
                          exit;
                          }
                          $passwort = md5($passwort);

                          $result = mysql_query("SELECT id FROM Userdaten WHERE user LIKE '$user'");
                          $menge = mysql_num_rows($result);

                          if($menge == 0)
                          {
                          $eintrag = "INSERT INTO login (username, passwort) VALUES ('$username', '$passwort')";
                          $eintragen = mysql_query($eintrag);

                          if($eintragen == true)
                          {
                          echo "Benutzername <b>$username</b> wurde erstellt. <a href=\"login.html\">Login</a>";
                          }
                          else
                          {
                          echo "Fehler beim Speichern des Benutzernames. <a href=\"registrierung.html\">Zurueck</a>";
                          }
                          }
                          else
                          {
                          echo "Benutzername schon vorhanden. <a href=\"registrierung.html\">Zurück</a>";
                          }
                          ?>



                          seht ihr den Fehler?? die Abfrage funktioniert soweit, allerdings bekomme ich immer die Meldung : Fehler beim Speichern des Benutzernamens

                          Danke im voraus!

                          Kommentar


                          • #14
                            PHP-Code:
                            <?php
                             ini_set
                            ('display_errors'1); 

                             
                            //konfiguration und verbindungsdaten holen
                             
                            include_once('config.inc.php');
                             include_once(
                            'connect.inc.php');

                             
                            $username $_POST["username"]; 
                             
                            $passwort $_POST["passwort"]; 
                             
                            $passwort2 $_POST["passwort2"]; 

                             if(
                            $passwort != $passwort2 OR $username == "" OR $passwort == ""
                             { 
                             echo 
                            "Eingabefehler. Bitte alle Felder korekt ausfuellen. <a href=\"registrierung.html\">Zurück</a>"
                             exit; 
                             } 
                             
                            $passwort md5($passwort); 

                             
                            $result mysql_query("SELECT id FROM Userdaten WHERE user LIKE '$user'"); 
                             
                            $menge mysql_num_rows($result); 

                             if(
                            $menge == 0
                             { 
                             
                            $eintrag "INSERT INTO login (username, passwort) VALUES ('$username', '$passwort')"
                             
                            $eintragen mysql_query($eintrag); 

                             if(
                            $eintragen == true
                             { 
                             echo 
                            "Benutzername <b>$username</b> wurde erstellt. <a href=\"login.html\">Login</a>"
                             } 
                             else 
                             { 
                             echo 
                            "Fehler beim Speichern des Benutzernames. <a href=\"registrierung.html\">Zurueck</a>"
                             } 
                             } 
                             else 
                             { 
                             echo 
                            "Benutzername schon vorhanden. <a href=\"registrierung.html\">Zurück</a>"
                             } 
                             
                            ?>
                            Heißt die Tabelle wirklich login?

                            Btw. der MD5 Hash gilt nicht mehr als sicher. http://php.net/manual/de/faq.passwords.php
                            [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                            [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                            Kommentar


                            • #15
                              und abermals danke

                              habe nun auch das MD5 ausgetauscht mit crypt() ---> er schreibt mir das PW dann auch in die Datenbank , allerdings bei der Anmeldung

                              ************************************************** ***********
                              FROM Userdaten
                              WHERE user = '".mysql_real_escape_string($_POST['u_name'])."'
                              AND passwort = '".crypt($_POST['u_pass'])."
                              ************************************************** ***********

                              erkennt er das PW nicht..

                              Kommentar

                              Lädt...
                              X