Ankündigung

Einklappen
Keine Ankündigung bisher.

ein login-system, basierend auf MySQL und sessions

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

  • #31
    Zitat von David Beitrag anzeigen
    Code:
    SELECT
      feld1, feld2, feld3
    FROM
      tabellenname
    Du schreibst aber den Tabellennamen schon dahin, wo die Feldnamen hingehören.
    Werd es probieren........DANKE

    Frohes Fest und nen guten Rutsch!
    Mike / Danke für die Hilfe.
    Sage nicht alles, was Du weißt, aber wisse immer, was Du sagst.

    Kommentar


    • #32
      Was meiner Meinung aus Sichet der Sicherheit noch Sinn macht, ist dass man die IP-Adresse, oder zumindest einen Hash von dieser mit in der Session speichert und diese dann in geschützten Bereichen mit der aktuellen IP-Adresse vergleicht.

      Dazu müsste in der Datei check_login.php folgendes hinzugefügt werden:
      PHP-Code:
      $_SESSION['IP'] = $_SERVER['REMOTE_ADDR']; 
      Am besten in Zeile 43.

      Die Datei val_login.php müsste dann auch angepasst werden und zwar müsste die Zeile 3 wie folgt angepasst werden:
      PHP-Code:
      if(($_SESSION['logged'] == FALSE) || ($_SESSION['IP'] != $_SERVER['REMOTE_ADDR'])) 
      Hoffe hab jetzt auf die Schnelle alles richtig gemacht.

      Gruß: elzumo

      Edit:
      Um mit Hashes zu arbeiten müssten die Codeänderungen wie folgt aussehen:
      PHP-Code:
      $_SESSION['IP'] = md5($_SERVER['REMOTE_ADDR']); 
      und
      PHP-Code:
      if(($_SESSION['logged'] == FALSE) || ($_SESSION['IP'] != md5($_SERVER['REMOTE_ADDR']))) 
      Meiner Meinung nach die Bessere Variante, da ich nicht viel von IP-Adressen im Klartext halte, zumindest dort nicht, wo es nicht notwendig ist.
      “Real Programmers don’t comment their code. If it was hard to write, it should be hard to read.”

      Kommentar


      • #33
        Was is'n an einer "Klartext-IP" so schlimm?

        Kommentar


        • #34
          Sagt mir einfach nicht zu, halte ich nicht viel von, besonders wenn es dann irgendwann Richtung Datenbank geht. Ich will auch nicht, dass überall meine IP zu finden ist.

          Zum Thema:
          wirspeichernnicht.de - Start
          “Real Programmers don’t comment their code. If it was hard to write, it should be hard to read.”

          Kommentar


          • #35
            Hi leute,

            ich hab das script versucht in etwas abgeänderter form in mein cms-script einzubauen, jedoch ergibt das bei immer einen fehler wegen dem header. Ich weiss nur leider nicht wie ich den beheben kann. (Ja, ich weiss das vor dem header keine ausgabe erzeugt sein darf).

            Ich hab das ganze so aufgebaut: das ganze login zeugs wird per index.php?section=login aufgerufen. die cfg`s sind schon in der index.php includet. die login.html und die check_login hier aus dem script habe ich in eine datei zusammengefasst (login.php).

            Die header informationen zum weiterleiten auf die inter.php habe ich so stehen lassen wie hier im script. Doch da ja erst die index.php aufgerufen wird habe ich natürlich auch ausgaben drinne. Jetzt dachte cih mri ich definiere den header in der index.php als aller erstes. Doch wie genau soll ich das machen? Also wie realisiere ich, das der header der login.php fehlerfrei funktioniert in meiner version?

            P.S.: Wenn cih einfach die dateien erstelle wie sie hier im script sind und das login-script unabhängig von meinem cms als standalone nehme funktioniert alles. Es geht also nur um die implementierung in mein script woebi sich eben der oben genannte header fehler ergibt.

            Der vollständigkeit halber hier noch die fehlermeldung:
            Code:
            Warning: Cannot modify header information - headers already sent by (output started at /home/www/web37/html/tnkstuff/tnkcms/index.php:111) in /home/www/web37/html/tnkstuff/tnkcms/login/login_check.php on line 46
            .visit » Tolga-Tanik.de
            .visit » TolgaTanikFoto @ Facebook
            .visit » Tolga Tanik Fotografie @ YouTube

            Kommentar


            • #36
              Zitat von Ambience Beitrag anzeigen
              Hast aber einen Fehler drinne...

              Bei: val_login.php

              da steht:

              PHP-Code:
              header('login.html'); 
              gehören tut es aber:

              PHP-Code:
              header('location: login.html'); 
              Und bei: logout.php

              würde ich aus:

              PHP-Code:
              <?php
              session_start
              ();
               
              //die sessions auf FALSE setzen
              $_SESSION['logged'] = FALSE;
              $_SESSION['u_name'] = FALSE
              das hier machen, sprich die sessions löschen:

              PHP-Code:
              <?php
              session_start
              ();
               
              session_destroy();
              Also ich hab sowohl als auch probiert......weder das eine noch das andere geht! Kann mir jemand sagen wie es wirklich geht?

              Das hab ich......es wir lediglich das "sie konnten als benutzer identifiziert werden" angezeigt.....es geht aber nicht weiter????

              Ich meine es müsste login.htm aufgerufen werden

              Das hab ich!?

              PHP-Code:
              else
              {
              //eine session "logged" auf TRUE setzen
              //eine session mit dem usernamen erstellen
              $_SESSION['logged'] = TRUE;
              $_SESSION['nic_name'] = $_POST['pw_user'];
              //auf die geschützte datei weiterleiten
              echo 'sie konnten als benutzer identifiziert werden';
              header('login.htm');
              exit();
              }

              Mike / Danke für die Hilfe.
              Sage nicht alles, was Du weißt, aber wisse immer, was Du sagst.

              Kommentar


              • #37
                Es steht doch schon in dem von dir zitierten Teil, was an
                PHP-Code:
                header('login.htm'); 
                falsch ist, es muss nämlich
                PHP-Code:
                header('Location: login.htm'); 
                heissen!

                Kommentar


                • #38
                  Zitat von Montellese Beitrag anzeigen
                  Es steht doch schon in dem von dir zitierten Teil, was an
                  PHP-Code:
                  header('login.htm'); 
                  falsch ist, es muss nämlich
                  PHP-Code:
                  header('Location: login.htm'); 
                  heissen!
                  Danke für die schnelle Antwort.
                  Leider bleibt auch mit deinem Vorschlag die Seite beim "echo" stehen
                  Mike / Danke für die Hilfe.
                  Sage nicht alles, was Du weißt, aber wisse immer, was Du sagst.

                  Kommentar


                  • #39
                    Die Fehlermeldung müsste
                    Warning: Cannot modify header information - headers already sent by (output started at *Deine Datei.php*:10) in *Deine Datei.php on line 34

                    Es darf also kein echo vor dem header Befehl stehen.

                    Kommentar


                    • #40
                      Zitat von Klabautermann Beitrag anzeigen
                      Die Fehlermeldung müsste
                      Warning: Cannot modify header information - headers already sent by (output started at *Deine Datei.php*:10) in *Deine Datei.php on line 34

                      Es darf also kein echo vor dem header Befehl stehen.
                      ne, es kommt garnichts........nur ein weißer Bildschirm

                      So ist es geschrieben!?

                      PHP-Code:
                       if(mysql_num_rows($result) != 1)
                                      {
                                      
                      //wenn nicht &uuml;bereinstimmt
                                      //echo 'sie konnten nicht als benutzer identifiziert werden';
                                      
                      header('Location: intern.php');
                                      exit();
                                      }
                                          
                      //wenn &uuml;bereinstimmt
                                          
                      else
                                              {
                                              
                      //eine session "logged" auf TRUE setzen
                                              //eine session mit dem usernamen erstellen
                                              
                      $_SESSION['logged'] = TRUE;
                                              
                      $_SESSION['nic_name'] = $_POST['nic_name'];
                                              
                      //auf die gesch&uuml;tzte datei weiterleiten
                                              //echo 'sie konnten als benutzer identifiziert werden';
                                              
                      header('Location: intern.php');
                                              exit();
                                              }
                                  }
                      ?> 
                      Das steht in "intern.php".....eigentlich sollte das echo angezeigt werden

                      PHP-Code:
                       if(mysql_num_rows($result) != 1)
                                      {
                                      
                      //wenn nicht &uuml;bereinstimmt
                                      //echo 'sie konnten nicht als benutzer identifiziert werden';
                                      
                      header('Location: intern.php');
                                      exit();
                                      }
                                          
                      //wenn &uuml;bereinstimmt
                                          
                      else
                                              {
                                              
                      //eine session "logged" auf TRUE setzen
                                              //eine session mit dem usernamen erstellen
                                              
                      $_SESSION['logged'] = TRUE;
                                              
                      $_SESSION['nic_name'] = $_POST['nic_name'];
                                              
                      //auf die gesch&uuml;tzte datei weiterleiten
                                              //echo 'sie konnten als benutzer identifiziert werden';
                                              
                      header('Location: intern.php');
                                              exit();
                                              }
                                  }
                      ?> 
                      Mike / Danke für die Hilfe.
                      Sage nicht alles, was Du weißt, aber wisse immer, was Du sagst.

                      Kommentar


                      • #41
                        Zitat von mike-loewe Beitrag anzeigen
                        PHP-Code:
                         if
                                        {
                                        
                                        }
                                            else
                                                {
                                                }
                                    } 
                        Na, was fällt auf? Genau, ne } zuviel...dann klappt es auch mit dem Nachbarn

                        Kommentar


                        • #42
                          Zitat von Traum Beitrag anzeigen
                          Na, was fällt auf? Genau, ne } zuviel...dann klappt es auch mit dem Nachbarn
                          Hi und Danke erstmal, bekomme immer noch einen Fehler in Zeile 46? Zeile 45 ist ?>

                          Fehler:
                          Parse error: parse error, unexpected $ in /homepages/10/d171645326/htdocs/msw_event/test/check_login.php on line 46

                          Hier mal das ganze

                          PHP-Code:
                          //pr&uuml;fen, ob die eingabefelder ausgef&uuml;llt wurden
                          if(empty($_POST['nic_name']) || empty($_POST['pw_user']))
                              {
                                
                          //wenn sie nicht ausgef&uuml;llt wurden
                               
                          echo 'es wurden nicht alle relevanten felder ausgef&uuml;llt';
                               exit();
                                    
                          //wenn sie ausgef&uuml;llt wurden
                               
                          }else
                                {
                                       
                          //eine SQL-abfrage vorbereiten und sie abschicken
                                       
                          $sql "SELECT user_id,
                                               nic_name,
                                               pw_user
                                               FROM user_mse
                                               WHERE  nic_name = '"
                          .mysql_real_escape_string($_POST['nic_name'])."'
                                               AND pw_user = '"
                          .mysql_real_escape_string($_POST['pw_user'])."'";
                                       
                          $result mysql_query($sql) or die(mysql_error());
                                      {
                          //pr&uuml;fung, ob genau eine der spalten mit der eingabe &uuml;berein stimmt
                          if(mysql_num_rows($result) != 1)
                           {
                                    
                          //wenn nicht &uuml;bereinstimmt
                                 
                          header ("Location:http://www.ulr.com");
                                 exit();
                                     
                          //wenn &uuml;bereinstimmt
                           
                          }else
                                      {
                                     
                          //eine session "logged" auf TRUE setzen
                                         //eine session mit dem usernamen erstellen
                                         
                          $_SESSION['logged'] = TRUE;
                                         
                          $_SESSION['nic_name'] = $_POST['nic_name'];
                                         
                          //auf die gesch&uuml;tzte datei weiterleiten
                                         
                          header ("Location:http://www.ulr.com");
                                         exit();
                                       }
                          ?> 
                          Mike / Danke für die Hilfe.
                          Sage nicht alles, was Du weißt, aber wisse immer, was Du sagst.

                          Kommentar


                          • #43
                            Zähl bitte mal durch, wieviele { in deinem Scriptteil aufgehen und wieviele zu.... Ist das in deinem Editor auch so grässlich eingerückt oder nur hier im Forum irgendwie? Sieht ziemlich unübersichtlich aus....

                            Tipp: Wenn ein Fehler in der Zeile mit dem ?> angegeben wird, liegt das immer daran, dass zu wenige } eingesetzt wurden.

                            EDIT: Ich glaube der Hinweis von Traum war nicht ganz richtig! Da waren nicht zu viele Klammern sondern zu wenige bzw am falschen Ort.

                            Kommentar


                            • #44
                              Das Problem ist eher, dass bei jedem Fehler den man ausmerzt ein neuer auftaucht. Und das darin geschuldet ist, dass es immer Codeschnipsel sind.

                              In dem Kommentar von mir gab es nur if(mysql..blaa) und nicht das davor. Demnach war die } zuviel

                              Mal gucken was es diesmal ist.

                              Kommentar


                              • #45
                                PHP-Code:
                                //pr&uuml;fen, ob die eingabefelder ausgef&uuml;llt wurden
                                if(empty($_POST['nic_name']) || empty($_POST['pw_user']))
                                    {
                                      
                                //wenn sie nicht ausgef&uuml;llt wurden
                                     
                                echo 'es wurden nicht alle relevanten felder ausgef&uuml;llt';
                                     exit();
                                          
                                //wenn sie ausgef&uuml;llt wurden
                                     
                                }else
                                      {
                                             
                                //eine SQL-abfrage vorbereiten und sie abschicken
                                             
                                $sql "SELECT user_id,
                                                     nic_name,
                                                     pw_user
                                                     FROM user_mse
                                                     WHERE  nic_name = '"
                                .mysql_real_escape_string($_POST['nic_name'])."'
                                                     AND pw_user = '"
                                .mysql_real_escape_string($_POST['pw_user'])."'";
                                             
                                $result mysql_query($sql) or die(mysql_error());
                                          
                                //pr&uuml;fung, ob genau eine der spalten mit der eingabe &uuml;berein stimmt
                                if(mysql_num_rows($result) != 1)
                                 {
                                          
                                //wenn nicht &uuml;bereinstimmt
                                       
                                header ("Location:http://www.ulr.com");
                                       exit();
                                           
                                //wenn &uuml;bereinstimmt
                                 
                                }else
                                            {
                                           
                                //eine session "logged" auf TRUE setzen
                                               //eine session mit dem usernamen erstellen
                                               
                                $_SESSION['logged'] = TRUE;
                                               
                                $_SESSION['nic_name'] = $_POST['nic_name'];
                                               
                                //auf die gesch&uuml;tzte datei weiterleiten
                                               
                                header ("Location:http://www.ulr.com");
                                               exit();
                                             }
                                }
                                ?> 
                                [/quote]

                                So, passt.

                                Kommentar

                                Lädt...
                                X