Ankündigung

Einklappen
Keine Ankündigung bisher.

Anmeldeseite erstellen

Einklappen

Neue Werbung 2019

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

  • Anmeldeseite erstellen

    Hallo zusammen,

    ich bin gerade dabei mir einige PHP- und MySQL-Grundlagen anzueignen und würde dazu gerne eine Art Mini-Portal erstellen, sozusagen als praktische Übung. Also es geht mir nicht um das Portal oder den Inhalt, sondern vielmehr darum, die Funktionen dahinter zu verstehen.

    In dem Buch welches mir sozusagen als Basis dient, werden zwar einfache MySQLi-Anfragen behandelt, aber leider alles ohne Benutzerunterscheidung.

    Ihr seht selbst, dass ich also noch ganz am Anfang stehe, dennoch würde mich interessieren, wie sich verschiedene User anlegen, und deren Berechtigungen über Gruppen festlegen lassen.

    Vielen Dank im Voraus!
    MfG mao

  • #2
    Hallo!

    wie sich verschiedene User anlegen, und deren Berechtigungen über Gruppen festlegen lassen.
    zB mittels ACL (Access Control List) - als Begriff, damit kannst du dann weiter googlen, hier im Froum suchen, gibt es auch Umsetzungsbeispiele etc... Natürlich können auch "fertigere" Lösungen (Klassen oder gleich Framework-basierend etc..) verwendet werden.

    Ansonsen würde ich mal sagen ist die Frage zu Allgemein. http://www.php.de/php-einsteiger/675...sumfragen.html

    Brich es herunter auf viele kleine Aufgaben und komm mit konkreten Fragen und Code dazu wieder.

    LG
    The string "()()" is not palindrom but the String "())(" is.

    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


    • #3
      Zunächst vielen Dank für deine Antwort, das Schlagwort sollte mir auf jeden Fall weiterhelfen.

      Ich bin mir nicht sicher, ob fertigere Lösungen mir beim Lernen weiterhelfen würden..


      MfG mao

      Kommentar


      • #4
        Zitat von mao Beitrag anzeigen
        Zunächst vielen Dank für deine Antwort, das Schlagwort sollte mir auf jeden Fall weiterhelfen.

        Ich bin mir nicht sicher, ob fertigere Lösungen mir beim Lernen weiterhelfen würden..


        MfG mao
        Hab dir nen kleines Login + Registrierungs script gebastelt. musst entsprechend die links verändern


        test.html
        PHP-Code:
        <!DOCTYPE html>
        <
        head>
        <
        title>Login</title>
        </
        head>
        <
        body>

               <
        center>
               <
        form action="login.php" method="post">
               <
        input type="text" maxlength="25" name="username" value="Benutzername">
               <
        div id="div1">
               <
        input type="text" maxlength="25" name="password" value="Passwort"></div>
               <
        div id="div2" style="display:none">
               <
        input name="password" id="password" type="password" value="" maxlength="25"></div>
               <
        input type="submit" value="Login" />
               <
        a href="">Passwort vergessen?</a>
               </
        form>
               </
        center>

        <
        div align="center">
        <
        h1Registrieren </h1>
        <
        form action="Eintragen.php" method="post">
        <
        input type="text" maxlength="25" name="username" value="Benutzername">
        <
        div id="div3">
        <
        input type="text" maxlength="25" name="passwort" value="Neues Passwort"></div>
        <
        div id="div4" style="display:none">
        <
        input name="passwort" id="password2" type="password" value="" maxlength="25"></div>
        <
        div id="div5">
        <
        input type="text" maxlength="25" name="passwort2" value="Passwort wiederholen"></div>
        <
        div id="div6" style="display:none">
        <
        input name="passwort2" id="password3" type="password" value="" maxlength="25"></div>
        <
        input type="submit" value="Abschicken">
        </
        form>
        </
        div>


        <
        form action="logout.php">
        <
        input type="submit" value="Abmelden">
        </
        form>



        </
        body>
        </
        html
        Eintragen.php
        PHP-Code:
        <?php
        $username 
        $_POST["username"];
        $password $_POST["passwort"];
        $password2 $_POST["passwort2"];



        if (
        $password == $password2)
           {
           
        $user_vorhanden = array();
           
        $passwort md5($password);


           
        $userdatei fopen ("user.txt","r");
           while (!
        feof($userdatei))
              {
              
        $zeile fgets($userdatei,500);
              
        $userdata explode("|"$zeile);
              
        array_push ($user_vorhanden,$userdata[0]);
              }
           
        fclose($userdatei);



           if (
        in_array($username,$user_vorhanden))
              {
              echo 
        "Username schon vorhanden <br> <a href=\"http://localhost/index.html\">zurück</a>";
              }

           else
              {
              
        $userdatei fopen ("user.txt","a");
              
        fwrite($userdatei$username);
              
        fwrite($userdatei"|");
              
        fwrite($userdatei$passwort);
              
        fwrite($userdatei"\n");
              
        fclose($userdatei);
              echo 
        "$username, deine Anmeldung war erfolgreich<br><a href=\"http://localhost/index.html\">zum Login</a>";
              }
           }

        else
          {
          echo 
        "Die Passwörter sind nicht identisch<br> <a href=\"http://localhost/index.html\">zurück</a> ";
          }

        ?>
        login.php
        PHP-Code:
        <?php
        session_start
        ();
        $username $_POST["username"];
        $passwort $_POST["password"];
        $passwort md5($passwort);
        $log=0;

        $userdatei fopen ("user.txt","r");
        while (!
        feof($userdatei))
           {
           
        $zeile fgets($userdatei,500);
           
        $userdata explode("|"$zeile);
           if (
        $userdata[0]==$username and $passwort==trim($userdata[1]))
              {
              
        $_SESSION['username'] = $username;
        header ("LOCATION: http://localhost/test.html");
         
        $log 1;
              }
           }
        fclose($userdatei);

        if (
        $log==0)
           {
           
        header ("LOCATION: http://localhost/test.html");

           }
        ?>
        logout.php
        PHP-Code:
        <?php
             session_start
        ();
             
        session_destroy();

             
        $hostname $_SERVER['HTTP_HOST'];
             
        $path dirname($_SERVER['PHP_SELF']);

             
        header('Location: http://localhost/index.html');
        ?>

        erstelle eine user.txt

        falls du unix-system benutzt setzte die rechte der user.txt auf chmod 777. sonst hat es kein schreibzugriff.

        -> das hier ist jetzt nur zum üben, normaler weise benutzt man datenbanken

        -> frag wenn dir etwas unklar ist

        Kommentar


        • #5
          Ich bin mir nicht sicher, ob fertigere Lösungen mir beim Lernen weiterhelfen würden..
          Naja das ansehen von fertigen Lösungen kann dir insofern weiterhelfen, da du von der Konzeption und Umsetzung der anderen Person lernen kannst um Ideen für deine eigene Implementierung zu sammeln.

          Ich mach's kurz - verwende das "Script von "199708897" NICHT!

          Warum?
          - Es basiert auf Textdateien zur Userverwaltung?
          - Er weißt nichtmal darauf hin das die Textdatei in seiner Implementation und ohne besondere Apache-Config (ob via vHost oder .htaccess ist dabei unwichtig) öffentlich aufrufbar ist
          - Er nutzt md5!
          - Er nutzt deutsche Dateinamen!
          - Er nummeriert div's durch?!
          - ...

          Happy Bashing für die folgenden an dieser stelle - ich bin mir sicher das folgt noch!
          Gruß,
          SebTM

          Kommentar


          • #6
            Vielen Dank 199708897! Ich bin total überrascht von deinem Beitrag, das ist wirklich sehr freundlich von dir

            Ich werde einige Schritte aber erstmal langsam nachvollziehen müssen

            Nach der Antwort von hausl bin ich erstmal auf Access Control Lists gestoßen, die objektorientiert verwirklicht wurden und auch auf PHP-Frameworks. Da ich auch seinem Link gefolgt bin, werde ich jetzt lieber nicht nach Meinungen fragen, aber gerade bin ich am Überlegen einen solchen Framework zu verwenden.

            Jedenfalls herzlichen Dank nochmal, deine scripts haben mir den prinzipiellen Ablauf verdeutlicht und ich freue mich darauf, sie auszuprobieren, nachdem ich noch einige Befehle nachgeschlagen habe


            /Edit: @SebTM: auch dir Danke für die sicherheitsrelevanten Anmerkungen, die mir ebenfalls sehr weiter helfen! Bevor aber das "bashing" losbricht, bitte im Hinterkopf behalten, dass es sich hier um ein stark vereinfachtes Lernprojekt handelt, also niemals auf einem echten Webserver landen wird

            Kommentar


            • #7
              Es ging bei meinen Bashing-Wünschen nicht um dich sondern darum das wir (die Forencommunity) dem Nutzer "199708897" mehrfach schon bei Grundlagenproblemen geholfen haben. Ich denke (bin mir nicht sicher) er wurde auch schonmal darauf hingewiesen das er gewisse Grundlagen einfach lernen muss / sollte.

              Wir haben hier viele Anfänger die es nicht besser wissen und solche Snippets als Wunderwerk nehmen und dann produktiv und LIVE einsetzten! Daher meine deutlichen Worte.

              Um nochmal auf dich / das Ursprüngliche Thema zurück zu kommen:
              Das Beispiel verdeutlicht villeicht den "Basis-Ablauf" eines Logins mit Anmeldung ABER - du musst dich definitiv in anderen Quellen (als dieses Script) im Bezug auf Sicherheit, Clean Code etc. informieren. Desweiteren solltest du villeicht auch bzgl. deines Lernprojekt einen Blick auf das Thema OOP werfen. Ich würde dir falls du ein "Einstiegsframework" suchst CakePHP empfehlen das ist halt ziemlich leicht - falls du später mal auf Symfony willst dann Silex da lernst du schonmal ein bisschenwas über Komponenten die beide benutzen.
              Gruß,
              SebTM

              Kommentar


              • #8
                Ich bin tatsächlich schon seit dem Posting von hausl am Lesen des CakePHP-Handbuchs

                Dort wird als Praxis-Übung ein einfaches Blog gebastelt und später sogar auf ACL eingegangen, also genau was ich suche

                Kommentar


                • #9
                  Moin,

                  ich würde die empfehlen, erstmal Grundlagen von PHP zu lernen bevor du dich mit einem Framework befasst. Am Ende hast du sonst 2 Jahre Erfahrung mit dem Framework deiner Wahl, kannst aber nicht ohne arbeiten und hast keine nennenswerten Kenntnisse der Sprache an sich. Eigene Meinung -> Frameworks sollen dir Standardaufgaben abnehmen/vereinfachen, nicht die Grundlagenkenntnisse ersetzen.

                  Meine Standardempfehlung zum Lernen der Basics: http://www.peterkropff.de/site/php/php.htm
                  Auf der Seite wird so ziemlich alles abgedeckt, was man zum Anfang mal brauchen kann. Im Tutorial 'PHP/MySQL'-Tutorial wird noch auf die mysql_* Erweiterung zugegriffen, aber wenn du dir dazu das Handbuch zu PDO öffnest, solltest du klar kommen.
                  [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


                  • #10
                    Zitat von 199708897
                    -> frag wenn dir etwas unklar ist
                    Ok... Was soll das...

                    Nimm's bitte nicht persönlich, Du willst helfen, das wissen wir!

                    Aber Du weißt selber auch, daß Dir noch einiges an Grundlagen fehlt und ein Login ist nicht mal eben so ein kleines Snippet, das man mal mit gefährlichem Halbwissen zusammenbasteln und schon gar nicht öffentlich zur Verfügung stellen sollte ( zumindest nicht in dem Stadium, in dem sich Deines befindet ).

                    @mao: Nimm bitte die Hinweise von SebTM und den anderen ernst.
                    Grundlagen sind das Fundament jeder guten Software. Auch wenn es nur zu Übungszwecken ist, versuche es gleich richtig zu lernen, dann profitierst Du definitiv mehr davon!
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      Grundlagen sind das Fundament jeder guten Software. Auch wenn es nur zu Übungszwecken ist, versuche es gleich richtig zu lernen, dann profitierst Du definitiv mehr davon!
                      Absolut, und es gibt sicherlich auch einige gute Tutorials, in denen das "roh" in PHP umgesetzt wird, dann profitierst du gleich doppelt.
                      The string "()()" is not palindrom but the String "())(" is.

                      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

                      Lädt...
                      X