Ankündigung

Einklappen
Keine Ankündigung bisher.

Simples Login-System

Einklappen

Neue Werbung 2019

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

  • Simples Login-System

    Hey Leute,
    ich hatte schon seit langem vor mir ein Login-System zu basteln und heute ist der Tag gekommen! Ich habe 3 Dateien: 1x index.php (einloggen), 1x eingeloggt.php (geschütze Bereich), 1x logout.php (ausloggen). Also ich habe die 3 Dateien auch schon fertig und meiner Meinung nach funktioniert ist es fertig. Ich habe mich etlich lang damit beschäftigt um ein "gutes" Tutorial zu suchen, habe jedoch keins gefunden, was meine Ansprüche decken konnte So und nun ist meine Frage, könnt ihr mir Feedback geben? Also was kann ich verbessern, ... . Ich habe Session's benutzt und ich habe nun kein Tutorial benutzt und es ging eig. relativ einfach und das macht mich stutzig.

    Hier die 3 Dateien:
    index.php (einloggen)

    PHP-Code:
    <?php
        session_start
    ();
        
    //Prüfe ob die Variable benutzername gesetzt ist
        
    if(isset($_POST["benutzername"])){
            
    //Prüfe ob der Benutzername stimmt
            
    if($_POST["benutzername"] == "BenutzerXYZ"){
                
    $_SESSION['eingeloggt'] = TRUE;
                
    header("Location: eingeloggt.php");
            }
            else {
                
    $_SESSION['eingeloggt'] = FALSE;
            }
        
    }
    ?>

    <html>
      <head>
        <title>Session's</title>
      </head>
      <body>
          <h1>Bitte einloggen: </h1>
          <br>
            <form action="index.php" method="POST">
                Benutzername: <input name="benutzername" type="text" placeholder="Benutzername = 'BenutzerXYZ'">        
            </form>
            
            <?php
                
    if(isset($_SESSION['eingeloggt'])){
                    if(
    $_SESSION['eingeloggt'] == FALSE){
                        echo 
    "Falscher Benutzername";                
                    }            
                }
            
    ?>
      </body>
    </html>
    eingeloggt.php (geschützter Bereich)

    PHP-Code:
    <?php
        session_start
    ();
    ?>

    <html>
      <head>
        <title>Eingeloggt</title>
      </head>
      <body>
              <?php
                  
    if(isset($_SESSION['eingeloggt'])){
                    if(
    $_SESSION['eingeloggt'] == TRUE){        
                        echo 
    "Super, du bist nun eingeloggt!";
                        echo 
    "<br>";    
                        echo 
    "Zum logout, <a href='logout.php'>Klick hier.</a>";
                    }    
                }
                else{
                    echo 
    "Bitte zuerst einloggen!";
                    echo 
    "<br>";
                    echo 
    "Zum login, <a href='index.php'>Klick hier</a>";    
                }
              
    ?>
      </body>
    </html>
    logout.php (ausloggen)

    PHP-Code:
    <?php
        session_start
    ();
    ?>

    <html>
        <head>
            <title>Ausgeloggt</title>    
        </head>
        <body>    
            <?php        
                
    if(isset($_SESSION['eingeloggt'])){
                    if(
    $_SESSION['eingeloggt'] == TRUE){                
                        
    $_SESSION = array();
                        
    session_destroy();    
                        echo 
    "Super, du bist nun ausgeloggt.";
                        echo 
    "<br>";                    
                        echo 
    "Zum login, <a href='index.php'>Klick hier.</a>";
                    }
                    else{
                        echo 
    "Du bist gar nicht eingeloggt.";
                        echo 
    "<br>";
                        echo 
    "Zum login, <a href='index.php'>Klick hier</a>";    
                    }            
                }
                else{
                    echo 
    "Du bist gar nicht eingeloggt.";
                    echo 
    "<br>";
                    echo 
    "Zum login, <a href='index.php'>Klick hier</a>";    
                }
            
    ?>
        </body>
    </html>
    Zudem hätte ich noch eine Frage. Die Session ID wird in einem Cookie gespeichert (?) und wie lange bleibt der bestehen? Bis ich den Browser schließe? Also wie lange bin ich eingeloggt? Kann ich von der Seite eingeloggt runter 3h im Internet surfen und danach wieder auf die eingeloggt.php gehen und bin noch eingeloggt?

    Achja und keine Sorge ich habe die 3 Datein schon hochgeladen und ihr könnt es testen unter der Adresse:

    http://skeptar.bplaced.net/Sessions/
    Benutzername = "BenutzerXYZ" um sich einzuloggen.

    Benutzen große Webseite auch Sessions um Login Systeme aufzubauen?

    Ich hoffe ich habe nicht zu viel geschrieben
    MFG


  • #2
    Verwendest Du wirklich PlainText und verzichtest auf eine Passwort-Abfrage?
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

    Kommentar


    • #3
      Leider weiß ich nicht ganz was "Plain Text" ist aber ich vermute unverschlüsselt?
      Also ja es gibt momentan kein Passwort, da es zu demonstration so schneller geht und die Funktionsweise mit dem Passwort fast das gleiche ist wie mit dem Benutzernamen. Und die prüfung der einzelnen Felder werde ich dann auch noch mit Javascript vornehmen^^

      aahh habe hier etwas zu plain text gefunden:

      http://de.wikipedia.org/wiki/Plain_text

      Kommentar


      • #4
        - Trenne HTML von PHP
        - Sehe "einloggen" als Status-Veränderung, nicht als aufeinanderfolgende Aktionen.
        [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

        Kommentar


        • #5
          .. und wenn du dir dann noch das Affenformular (Standardverfahren) verinnerlichst, brauchst du auch keine 3 Skripte mehr.
          PHP-Klassen auf github

          Kommentar


          • #6
            @skeptar:

            Zitat von tr0y Beitrag anzeigen
            - Trenne HTML von PHP
            http://php-de.github.io/jumpto/eva-prinzip/

            LG
            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
            PHP.de Wissenssammlung | Kein Support per PN

            Kommentar


            • #7
              @jspit
              Was das Affenformular ist, ist mir durchaus bewusst, und dazu habe ich gehört man sollte ds Formular lieber mit JS anstatt mit PHP prüfen, da PHP eine Serverseitige Sprache ist werden die Daten übertragen und das ist ja gar nicht notwendig.(?) Angenommen ich nehme das Affenformular, wie kann ich damit 1 Script sparen?

              @tr0y
              Erstmal sorry, dass ich dir eine private Nachricht geschrieben habe... Ich habe erst später gelesen das, dass nicht erwünscht ist ohne deine Aufforderung...
              Naja nun zu deiner Antwort^^
              - Sehe "einloggen" als Status-Veränderung, nicht als aufeinanderfolgende Aktionen.
              Wie ist das gemeint? Sollt ich in "login.php" prüfen ob es stimmt und wenn ja nicht auf die Datei "eingeloggt.php" springen sonder auf login.php bleiben? Dafür halt if/else benutzen?
              So etwas in der Art? Also mit include einfügen?
              http://www.php.de/php-tipps-2009/568...ginsystem.html


              - Trenne HTML von PHP
              Wie? Ich komme damit kein Stück klar.
              http://www.php.de/php-einsteiger/933...r-trennen.html
              Aber wie du es in dem Beitrag erklärt hast, so meinst du das?

              @hausl
              Was hat den das EVA-Prinzip mit der Trennung von Code zutun?

              MFG

              Kommentar


              • #8
                Zitat von skeptar Beitrag anzeigen
                @jspit
                Was das Affenformular ist, ist mir durchaus bewusst, und dazu habe ich gehört man sollte ds Formular lieber mit JS anstatt mit PHP prüfen, da PHP eine Serverseitige Sprache ist werden die Daten übertragen und das ist ja gar nicht notwendig.(?) Angenommen ich nehme das Affenformular, wie kann ich damit 1 Script sparen?
                Wenn du das Affenformular richtig anwendest hast nur noch ein Skript, welches sich immer wieder selbst aufruft und entsprechend Status (Eingeloggt, Ausgeloggt,..) und Nutzereingaben entscheidet, was zu machen und auszugeben ist.

                Eine Prüfung der Daten sollte immer serverseitig erfolgen, nach dem Motto traue nichts und niemanden was von draußen rein kommt.
                Eine Prüfung mit Javascript (clientseitig) ist optional und dient in der Regel der Verbesserung des Bedienkomforts.
                PHP-Klassen auf github

                Kommentar


                • #9
                  @hausl
                  Was hat den das EVA-Prinzip mit der Trennung von Code zutun
                  Nicht der "Trennung von Code" sondern Trennung der (PHP)-Verarbeitungslogik und der Ausgabe (HTML etc..). Dh die Ausgabe erfolgt erst zum Schluss, du hingegen hast oben inmitten des HTML Codes (das ist schon der Ausgabeteil) PHP Verarbeitungscode.

                  zB sowas:

                  PHP-Code:
                  <html> 
                    <head> 
                      <title>Session's</title> 
                    </head> 
                    <body> 
                        <h1>Bitte einloggen: </h1> 
                        <br> 
                          <form action="index.php" method="POST"> 
                              Benutzername: <input name="benutzername" type="text" placeholder="Benutzername = 'BenutzerXYZ'">         
                          </form> 
                           
                          <?php 
                              
                  if(isset($_SESSION['eingeloggt'])){ 
                                  if(
                  $_SESSION['eingeloggt'] == FALSE){ 
                                      echo 
                  "Falscher Benutzername";                 
                                  }             
                              } 
                          
                  ?> 
                    </body> 
                  </html>
                  Diese Behandlung/sollte "weiter oben" passieren Eingabe/Verarbeitung und nicht inmitten der Ausgabe (HTML-Code in dieser Form).

                  LG
                  Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                  PHP.de Wissenssammlung | Kein Support per PN

                  Kommentar


                  • #10
                    Bei der Sache mit dem Passwort musst du dann auch noch aufpassen.

                    Je nach Sicherheitsanforderungen kann die Prüfung des Passworts nämlich erheblich von der Prüfung des Benutzernamens abweichen.

                    Kommentar


                    • #11
                      @skeptar: Jo.
                      [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                      Kommentar


                      • #12
                        Oke danke danke für die vielen Antworten!

                        Ich werde mich morgen früh direkt ran setzten nun fahre ich erstmal nach Hause
                        Aber ich werde bestimmt morgen das ein oder andere mal Fragen. Aber es sieht stark danach aus alles von vorne auf zu bauen :P, was aber nicht schlimm ist, denn so lerne ich es ja ^^

                        @tr0y beantwortest du alle meine Fragen mit Jo. die an dich gingen?
                        Ich vermute es mal frage aber trodzdem besser nochmal nach.

                        MFG

                        Kommentar


                        • #13
                          Ja, besser aber du wickelst alles über eine index.php ab sodass du nur einen Eintrittspunkt in deiner Anwendung hast.

                          Zum Thema Templating hat der Nikolaus etwas aus meiner Feder veröffentlicht: http://www.php.de/board-support/1121...gen-motor.html
                          [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                          Kommentar


                          • #14
                            Muss das mit so einer Template enigne umbedingt passieren? Oder kann ich es einfach bei normalen PHP Code belassen? Nun habe ich dem Link entnommen "Twig, Smarty oder Mustache". Und dabei steht das man noch eine längere Lernphase hat. Kann ich nicht einfach den PHP Code auslagern und an den Stellen wo ich ihn brauche mit Include einbinden? Und falls nicht... hmm. Vielleicht kennst du ja einen Link der das gut erklärt, auch gerne auf englisch.

                            MFG

                            Kommentar


                            • #15
                              Template-Engines ( auch die einfache vom nikolaus-beitrag ) sind nicht zwingend notwendig, du hast aber die möglichkeit das du bspw. (bestimmte) Variablen einem Template nur zur Verfügung stellen kannst, die beispielsweise nach dem erzeugen des Templates wieder verändert würden ( für ein weiteres Template ).

                              Im Grunde ist die handhabe durch einfache Template-Engines / -Klassen einfacher. Das ganze mit der im Nikolaus-Beitrag erklärten selbst-gebauten Engine zu erledigen, da du ja weißt was du da gebaut hast, hält die Lernkurve so klein wie möglich.
                              [URL="https://gitter.im/php-de/chat?utm_source=share-link&utm_medium=link&utm_campaign=share-link"]PHP.de Gitter.im Chat[/URL] - [URL="https://raindrop.io/user/32178"]Meine öffentlichen Bookmarks[/URL] ← Ich habe dir geholfen ? [B][URL="https://www.amazon.de/gp/wishlist/348FHGUZWTNL0"]Beschenk mich[/URL][/B].

                              Kommentar

                              Lädt...
                              X