Passwortgeschützer Bereich

  • Hey,


    dafür brauchst du eine Registrierung, ein Login und ein Admindashboard für dich wo du festlegen kannst wer den Rang "Admin" bekommt. Dies User, die den Rang Admin haben dann auf mehr Seiten Zugriff als normale User.


    So solltest du vorgehen:

    • Schritt 1 : Registrierung erstellen
      1. Erstelle ein Registrierungformular mittels HTML, Info: Das Formular soll die Methode post haben
      2. Werte die eingehenden Formulardaten über POST mit PHP aus
      3. Bei allen Eingaben bis auf dem Passwort alle Leerzeichen vor und hinter dem String entfernen mit der Function trim()
      4. Nun filterst du alle Formulardaten bis auf das Passwort mit der Function filter_var.
      5. Fehlerbehandlung. Überprüfe ob alle erforderlichen Felder nicht leer sind. Wenn diese Leer sind gibst du Fehler aus
      6. Wenn keine Fehler vorhanden sind verbindest du dich mit deiner Datenbank.
      7. Das Passwort hashen. Sehr wichtig! Dazu nimmst du die Function password_hash mit dem Algorhythmus PASSWORD_DEFAULT
      8. Hänge an das Passwort ein Pepper an. Beispiel ein String.
      9. Erstelle dir für das Douple Opt In-Verfahren noch ein Bestätigungshash. Zum Beispiel aus der E-Mail und dem Nachnamen.
      10. Du führst eine Überprüfung durch ob der eingegebene Username bereits vorhanden ist, wenn ja Fehlermeldung
      11. Wenn nein führst du mittels Prepared Statements das Insert-Statement aus, damit die Daten in die DB gespeichert werden.
      12. Du sendest nach erfolgreicher Registrierung (wenn die Daten erfolgreich in die DB eingefügt werden) demjenigen eine E-Mail mit dem Bestätigungslink. An diesem ist dann der Bestätigungshash als Parameter dran. Auf diesen kannst du dann auf der Seite "Registrierung abschließen" mittels GET zugreifen und diesen Bestätigungshash mit dem Besätigungshash aus der DB vergleichen. Wenn diese übereinstimmen setzt du die Spalte "login" auf 1. Das heißt, dass es erfolgreich war. Wenn diese nicht zusammenpassen gibst du ein Fehlermeldung aus.
    • Schritt 2 : Login erstellen
      1. Erstelle das Loginformular mittels HTML, auch hier Post als Methode verwenden
      2. Werte die eingehenden Formulardaten über POST mit PHP aus
      3. Bei allen Eingaben bis auf dem Passwort alle Leerzeichen vor und hinter dem String entfernen mit der Function trim()
      4. Nun filterst du alle Formulardaten bis auf das Passwort mit der Function filter_var.
      5. Verbinde das eingegebene Passwort mit dem verwendeten Pepper aus der Registrierung
      6. Fehlerbehandlung. Überprüfe ob alle erforderlichen Felder nicht leer sind. Wenn diese Leer sind gibst du Fehler aus
      7. Wenn keine Fehler vorhanden sind verbindest du dich mit deiner Datenbank.
      8. Du selektierst aus der Datenbank den Usernamen, das Passwort und den Rang bei dem der Username = eingegebener Usernamen ist und fetchst diesen.
      9. Danach vergleichst du ob das eingegebene Passwort mit dem Passwort aus der DB übereinstimmt. Dazu verwendest du die Function password_verify
      10. Wenn diese übereinstimmen erstellst du eine Session mit der UserId und dem Rang. Diese brauchst du dann um auf der Startseite die Daten des jeweiligen Users anzuzeigen
    • Schritt 3 : Startseite erstellen
      1. Überprüfe ob die Session UserId und Rang vorhanden ist. Wenn nein Scriptabbruch.
      2. Überprüfe welchen Rang der User hat. Wenn der Rang = Admin zeige ihm mehr Seiten an.
      3. Selektiere alle Daten aus der Datenbank wo die userId = session User Id ist. Nun hast du die Userdaten und kannst diese ausgeben oder auf seinem Profil verlinken
    • Schritt 4: Rechtezentrale erstellen
      1. Überprüfe ob die Session UserId und Rang vorhanden ist. Wenn nein Scriptabbruch.
      2. Überprüfe Ob die Session Id = Admin ist. Wenn nein Scriptabbruch.
      3. Du verbindest dich mit deiner Datenbank.
      4. Nun selektierst du alle Datensätze und fetchst diese
      5. Gebe alle Datensätze aus mit einem Bearbeiten Button.
      6. Bei klick auf den Bearbeiten Buttons kannst du dann auf der anderen Seite den Rang ändern.


    Dies sollte soweit alles erklären. Wenn ich was vergessen habe oder wenn man was verbessern kann, könnt ihr es ruhig sagen.


    Grüße,

    Stef

  • Wenn ich auf den Link gehe von den TE hat er ja eigentlich alles was er brauch. Er brauch in der DB ja nur noch eine Spalte dazu setzen mit den Vermerk admin "true" oder wie auch immer man das geschickt macht.

    Dann muß man das Script doch nur noch anpassen das Admin "true" das recht besitzen die anderen Seiten zu besuchen oder sehe ich das falsch ?


    Stef gute erklärung. vieleicht kann man denn Usernamen noch auf Sonderzeichen prüfen die nicht erlaubt sind.Aber wie man das mit Php macht weiß ich nicht.

  • Das können dir die anderen besser erklären. Aber da ich langeweile versuche ich das mal auf dein Script anzupassen. Wenn ich erfolgreich bin und mir ein Php Profi sagt das ist Ok dann versuche ich das mal zu erklären.


    Wäre aber einfacher wenn dir das gleich einer der Profis erklärt

    Wie weit kennst du dich den überhaupt aus mit php und Datenbanken ?

  • Hi,


    Anfaengerhtml : Ich habe dir in meinem Beitrag, in dem ich die gesamte Vorgehensweise erläutert habe, auch geschrieben wie du es erreichen kannst.


    Du brauchst dafür Sessions sowie if-Else.


    Sessions und If-Else Bedingungen sind meiner Meinung nach Grundlagen. Zeige uns dein Versuch und ich werde dir konstruktiv helfen.

  • Dann helft ihn doch mal.Ich weiß wie schwer das ist wenn man das noch nie gemacht hat.

    Das Script aus post1 hat ja schon fast alles was er brauch.Selbst die session.

    Mit gewisse Grundlagen sollte man es auch hinbekommen.

    Ich habe es gerade versucht und auch geschafft.

    Bin nur zu blöde die pdo abfragen vernünfftig zu stellen.

    Mit mysqli geht das immer gut bei pdo immer nur mit umwege.


    Wie kann man die Abfrage auf dieses Script anpassen

    In der Datenbank steht bei admin nur true oder false


    Ich weiß viel zu lang und kompliziert aber ich bekomme es mit pdo nie auf der Kette.

    Wie kann man diese Abfrage verkützen ? Bzw richtig machen ?

  • Dann helft ihn doch mal

    Ich denke, Stef hat eine mehr als ausführliche Hilfe geschrieben. Es steht nicht jeder so darauf wie du, fertige Lösungen zu posten. Das macht auch meist keinen Sinn, weil der Lerneffekt nahe Null liegt und Copy/Paste kann ja sowieso schon jeder. Außerdem gibt es massenhaft Tutorials im Netz, man muss einfach nur mal in Ruhe lesen und verstehen. Man darf als Anfänger halt nicht erwarten, dass man so etwas in einer Stunde erledigt hat.

  • Ich denke, Stef hat eine mehr als ausführliche Hilfe geschrieben. Es steht nicht jeder so darauf wie du, fertige Lösungen zu posten. Das macht auch meist keinen Sinn, weil der Lerneffekt nahe Null liegt und Copy/Paste kann ja sowieso schon jeder. Außerdem gibt es massenhaft Tutorials im Netz, man muss einfach nur mal in Ruhe lesen und verstehen. Man darf als Anfänger halt nicht erwarten, dass man so etwas in einer Stunde erledigt hat.

    Meine Meinung dazu.


    Von Copy/Paste lernt man nicht viel das stimmt.

    Kommt aber drauf an was der TE immer will.

    Ich kann den TE versehen wenn er schnell eine Lösung brauch weil er keine Zeit/Lust oder sonst irgendwas hat.

    Dann brauch er eine Lösung und will nicht Stundenlang suchen und dikutieren.


    Wenn man dann eine Anleitung bekommt die man als Anfänger noch nicht richtig versteht ,kann ich den TE auch verstehen das er das nicht will.

    So eine Anleitung und Links zu bekommen ist für den lerneffekt natürlich besser. Wie oft hast du mir Links und Codebruchstücke gegeben damit ich selber Suchen ,lesen lernen muß. Jetzt im nachherein sage ich dazu das es gut wahr ,weil sonst würde ich das meißte immer noch nicht verstehen bzw bei 0 stehen.

    Mitlerweile brauche ich nur in PHPManaul reinschaun und weiß bei den meißten was gemeint ist was ich so ungefähr tun muß, was mit Copy Paste natürlich nicht möglich gewesen wäre.


    Solange der TE nix sagt und keine eigene versuche zeigt bekommt er hier keine Komplette Lösungen.

    Obwohl er ja selber schon fast eine Lösung gepostet hat.Mit etwas nachdenken sollte er das Anfangs Script auch selbst bearbeiten können, ich dummkopf habe es ja auch geschafft und das ist schon nee Kunst. Ob es Korekkt ist weiß ich nicht,das darf ich noch nicht posten,aber wenn das Thema mal gelöst ist dann poste ich es mal damit ihr Profis mal kucken könnt wie viel ich Falsch gemacht habe.

    Ein Fehler ist ja schon da oben ,ich weiß nicht wie ich bei pdo das in einer Abfrage reinbekomme.

  • Hi,


    vielleicht solltest du dir die Schritt für Schritt-Anleitung auf der Schwesterseite vom HTML-Seminar ansehen unter https://www.php-kurs.com/db-sql-php-programm-verwaltung.htm


    Hier wird eine Datenbankanwendung als Tutorial sehr umfangreich erklärt:

    - Datenbankprogramm in PHP

    - Formular vorbereiten für neuen Datensatz

    - Formularinhalt speichern in Datenbank

    - Datensatz löschen durch User

    - Datensatz bearbeiten durch User

    - Erweiterung: Datenbankprogramm in PHP

    - Anzeigen eines einzelnen Datensatzes

    - Sicherheitsabfrage beim Löschen

    - Suchfunktion integrieren

    - Gedächtnis für Datenpflege-Tool

    - Seitenweise Anzeige (Paginierung)

    - Design für Datenverwaltungsprogramm

    - Login-Bereich integrieren

    - Login-Bereich mit DB-Zugriff


    Viel Spaß beim lesen

  • Ich kann den TE versehen wenn er schnell eine Lösung brauch weil er keine Zeit/Lust oder sonst irgendwas hat.

    Dann brauch er eine Lösung und will nicht Stundenlang suchen und dikutieren.

    Nanana... Dann sollte man lieber die Finger davon lassen. Das was Du da schreibst impliziert, dass der Fragen stellende Anfänger Lösungscode einfach in seine Projekte kopiert ohne diese zu verstehen. Das ist so ziemlich das Dümmste, was man machen kann.


    Gerade bei einem Login, der ja komplett auf Sicherheit basiert, sollte man schon verstehen, was man da tut. Wenn man meint, die Zeit dafür nicht zu haben, sollte man das auch nicht selber machen!


    Zu Deinem Script: Es sind keine zwei SQL-Queries nötig.

    ungeteset, aber der Aufbau/Ablauf sollte klar sein, denke ich...

  • Nagut ,hast ja auch recht ,wenn man überhaupt keine Ahnung hat dann sollte man vieleicht Copy&Paste auch nicht machen. Gerade nicht bei so ein Script.

    Wenn er an einen Programmierer findet der ihn einen Falschen Code unter jubelt könnte er sich damit ein eigen Tor schiessen.

    Also sollte man vor den Kopieren zumindest bestimmte Grundlagen verstehen damit sowas nicht passiert.


    Dein Code sieht schon besser aus. Mir wahr das eigentlich klar das es in einer Abfrage geht ,aber habe ich mit pdo nicht hinbekommen. Habe es mal mit mysqli versucht da hatte es sofort geklappt.

    Sollte mich wohl mehr mit Pdo auseinander setzten ,obwohl ich lieber mysqli mag.

    Wenn man die anderen Leute fragt was besser ist kann man auch nicht nach gehen weil jeder was anderes sagt.

  • Ja, das ist halt Geschmackssache. PDO bietet einige Vorteile, die aber nicht zwingend jeder braucht.

    MySQLi kannst Du ebenso gut verwenden, wie PDO, obwohl ich eher PDO empfehle... ;)