Login-Skript

  • Hallo zusammen,

    eigentlich habe ich daran gedacht, das folgende Script extern programmieren zu lassen (Fiverr etc.), da ich von PHP nicht all zu viel Ahnung habe. Aber ich probiere es einfach mal, und schaue ob ich das mit eurer Hilfe hinbekomme ;)

    Es soll ein recht simples Login-Script mit ein wenig Einstellungs-Möglichkeiten werden. Die PWA-Seite (So etwas ähnliches wie ein internes Mini-Wikipedia für unterwegs) dafür ist kurz vor der Fertigstellung. Geplant sind aktuell drei Gruppen (Admin, Leiter, User), und folgender Aufbau:

    Frage #1: Struktur / Aufbau

    Frage #2: Benutzergruppen

    Frage #3: Statistiken

    Schon mal vielen Dank für alle kommenden Antworten und Hilfen,

    Bud

    [RS] 2000 G9 | Cyber Quack

    [VPS] 1000 G9 | 200 G8 | Secret | A | mikro G11s | 4x nano G11s
    [WH] 2x 8000 SE | 4000 SE | 2000 SE

    2 Mal editiert, zuletzt von Bud ()

  • Ich stelle jetzt mal eine essentiell wichtige Frage...


    Warum?


    Also ernsthaft ist das Projekt wirklich ein Projekt für dass es keine fertige Lösung(en) gibt?

    Matrix: @nan0:nan0.dev - IRC: nan0 on hackint.org - Discord? Nein danke!

    Verwirrend 1
  • Warum?

    Aus Spaß. Zum einen weil ich durch solche Projekte für mich etwas dazulernen möchte, und zum anderem da ich das ganze möglichst schlank halten will.

    Klar könnte ich das über WP realisieren und mir x Plugins draufklatschen, aber das möchte ich nicht, das alles brauche ich so gesehen ja nicht.

    [RS] 2000 G9 | Cyber Quack

    [VPS] 1000 G9 | 200 G8 | Secret | A | mikro G11s | 4x nano G11s
    [WH] 2x 8000 SE | 4000 SE | 2000 SE

  • Nutz doch einfach eine Datenbank-Tabelle für die User.


    Felder könnten z.B. sein:

    ID, name, password (idealerweise Hash+Salt), group (user|leiter|admin), last_login, modified, created


    beim User-login dann einfach 'last_login' des Users updaten.


    Seitenauswahl könnte dann einfach:

  • Aus Spaß. Zum einen weil ich durch solche Projekte für mich etwas dazulernen möchte

    PHP lernen. Gibt sehr viele Ressourcen, u.a.:

    - https://www.php-einfach.de/exp…in-ab-php-537-mit-mysqli/

    - https://php-de.github.io/


    Beides auf Deutsch.



    Gibt es etwas am oben gezeigten Aufbau, was ihr anders machen würdet?

    Sieht gut aus.



    Die Benutzergruppe "admin" hat genau einen user, und "leiter" sind zwei bis drei user. Spricht etwas dagegen die einfach jedes mal als if else abzufragen? Also z.B.:

    Den Code den du zeigst, sind ja User Vergleiche - User 1 darf das / User 2 das - ist an sich kein Rollen / Rechte oder Gruppensystem.

    Hier würde ich mit Gruppen arbeiten.


    Generell schöner bei vielen if / else über die gleiche Variable ist das von Pit72 gezeigte switch case Konstrukt.


    Ist es schwer Statistiken wie die letzte Login-Zeit bzw. eher die letzte Aktivität zu speichern?

    Nö, in einer Login PHP kannst du nach erfolgreichem Login ein MySQL Update Befehl feuern, der in den Userdatensatz den letzten Login einträgt.

    Die letzte Aktivität würde ich aus Geschwindigkeitsgründen weglassen, kann aber auch in jeder Datei über eine "common" Funktion, die du mit include oder require reinholst auch ein MySQL Update feuern.

  • Bud

    Hat den Titel des Themas von „Bud´s PHP Projekt“ zu „Titel“ geändert.
  • eine Frage hab ich noch:


    Zitat

    Bud Vor 7 Stunden
    Hat den Titel des Themas von „Bud´s PHP Projekt“ zu „Titel“ geändert.

    ... warum?!? ^^


    edit: ah okay, glaube habe die Ursache im längsten Thread entdeckt. :) ob der neue Titel nun viel besser ist sei mal dahingestellt. :S

  • ID, name, password (idealerweise Hash+Salt), group (user|leiter|admin), last_login, modified, created

    Wieso eigentlich ID? Ich gehe davon aus, du meinst eine fortlaufende? Ist die für irgendwas wichtig?
    Denke gerade eher an:

    username, name, password, group, last_login, modified, created

    Wie verhält es sich mit last_login, wenn der login gespeichert wird? Ich hab mich hier im Forum genau ein mal eingeloggt...

    [RS] 2000 G9 | Cyber Quack

    [VPS] 1000 G9 | 200 G8 | Secret | A | mikro G11s | 4x nano G11s
    [WH] 2x 8000 SE | 4000 SE | 2000 SE

  • Wieso eigentlich ID?

    Für den Anfang würde ich dir empfehlen, dich etwas mit relationalen Datenbanken zu beschäftigen und ein ORM anzufertigen. :)


    Normal hat man in jeder Tabelle einer Datenbank eine ID-Spalte. Anhand dieser kannst du die jeweiligen Einträge eindeutig identifizieren.


    Kleines Beispiel:

    Du hast die Tabelle User und die Tabelle Posts. Ein Post wird immer von einem User verfasst (1:n-Beziehung). Wie möchtest du jetzt die Posts den Usern zuordnen?

    Die Lösung ist normalerweise, dass man in der Posts-Tabelle eine Spalte einfügt, mit der man den User referenzieren kann. Man könnte natürlich sowas wie die E-Mail-Adresse nehmen. Aber was, wenn ein User seine E-Mail-Adresse ändert? Dann muss man daran denken in jeder Tabelle diese Referenz zu ändern. Es gibt zwar die Möglichkeit, dass die Datenbank das für dich automatisch erledigt, aber nicht immer hast du in jeder Tabelle eine eindeutige Spalte. Daher verwendet man IDs.

    RS Brezn | VPS 500 G8 Plus | 2× VPS Karneval 2020 | VPS Pocket Admin | RS Cyber Quack | Webhosting EiWoMiSau


    Dieses Gebäude hat mir die Vorfahrt genommen! *hup*

    Gefällt mir 3
  • Bevor ich anfange mich richtig einzulesen und anzufangen, noch eine kleine Frage:

    Die Leiter sollen ja später in den Einstellungen ihren persönlichen Status ändern können. Wo speichere ich den? In der gleichen Tabelle? Macht das Sinn, weil dann theoretisch normale User und Admins auch einen Status haben, der nicht verwendet wird? Aber macht wahrscheinlich deswegen Sinn, da es einen eindeutigen Benutzer-Bezug hat, richtig?


    Der Admin soll den Status aller Leiter ändern können, aber ich glaube das ist irrelevant.

    [RS] 2000 G9 | Cyber Quack

    [VPS] 1000 G9 | 200 G8 | Secret | A | mikro G11s | 4x nano G11s
    [WH] 2x 8000 SE | 4000 SE | 2000 SE

  • Bud

    Hat den Titel des Themas von „Titel“ zu „Login-Skript“ geändert.
  • Die Leiter sollen ja später in den Einstellungen ihren persönlichen Status ändern können.

    Ist der Status ein freier Text oder eine Auswahl aus vorgegebenen Optionen?


    In beiden Fällen würde ich das in der User-Tabelle einfügen. Entweder als Text oder als Fremdschlüssel. Die Anwendung muss dann dafür Sorge tragen, dass nur Admins den Status ändern können.

    Bei allen anderen Usern steht dann null in der entsprechenden Spalte.

    RS Brezn | VPS 500 G8 Plus | 2× VPS Karneval 2020 | VPS Pocket Admin | RS Cyber Quack | Webhosting EiWoMiSau


    Dieses Gebäude hat mir die Vorfahrt genommen! *hup*

    Einmal editiert, zuletzt von Virinum ()

    Gefällt mir 1
  • sowas? dann hättest du für jeden separaten Zugriff.


    Hier wäre das Beispiel für die "admin.php" auf die dann nur die User "Admin" Zugriff haben:

    Vielleicht Hilft es Dir ja trotzdem.


    BTW:

    Wenn jemand etwas Fragt, egal was, wäre es glaube ich rein prinzipiell erstmal schön ihm zu helfen. Die Frage nach dem "Warum" kann natürlich wichtig sein, wenn es aber nur um die eigene Befriedigung des Wissensdurst geht ist das manchmal schwierig für den fragenden. Auch gleich mich natürlich auch interessiert hätte wieso er das macht. Im Forkus liegt aber deutlich erstaml wie man das macht.

    Der oben geschriebene Beitrag ist meine persönliche Meinung/Interpretation!
    Im übrigen verweise ich auf §675 Abs. 2 BGB .

    Einmal editiert, zuletzt von Real-DD-2 ()

    Gefällt mir 2
  • Ich habe mal schnell noch weiter gemacht, wenn der Benutzer seine Daten ändern will, dann wäre das ein Weg:


    Man könnte jetzt natürlich viel Code Sparen, indem man files einbindet per "include" aber zum Üben glaube ich passt das so schon :)

    Der oben geschriebene Beitrag ist meine persönliche Meinung/Interpretation!
    Im übrigen verweise ich auf §675 Abs. 2 BGB .

    Gefällt mir 3
  • Sorry für den Spam, hier noch flott die Datenbank, ganz einfach mal mit paar usern:


    Damit hast du jetzt ein Login, ein register und das bearbeiten von Daten.

    Der oben geschriebene Beitrag ist meine persönliche Meinung/Interpretation!
    Im übrigen verweise ich auf §675 Abs. 2 BGB .

    Gefällt mir 2
  • Das ist super super super lieb von dir Real-DD-2 , aber ich würde das entweder gegen Bezahlung programmieren lassen oder selbst versuchen und dabei lernen ^^


    Aktuell ist es Option 2, wobei ich leider gerade außerhalb dieses Forums gut eingespannt bin, und sich das ziehen wird.


    Sollte ich dann meine ersten Versuche hier posten, dann darfst du gerne die Tasten schwingen und das meckern anfangen was ich alles falsch gemacht habe und verbessern darf ;)

    [RS] 2000 G9 | Cyber Quack

    [VPS] 1000 G9 | 200 G8 | Secret | A | mikro G11s | 4x nano G11s
    [WH] 2x 8000 SE | 4000 SE | 2000 SE

  • Naja das ist ja nur ein flottes Beispiel, vielleicht hilft es Dir beim lernen :)

    Wenn du Fragen oder Probleme hast, dann kennst du ein gutes Forum wo es genug Menschen gibt die Dir gerne helfen :)


    LG

    Der oben geschriebene Beitrag ist meine persönliche Meinung/Interpretation!
    Im übrigen verweise ich auf §675 Abs. 2 BGB .

    Danke 2 Gefällt mir 1
  • Naja das war ja nur ein Beispiel. So schwer wäre der austausch ja nicht

    Der oben geschriebene Beitrag ist meine persönliche Meinung/Interpretation!
    Im übrigen verweise ich auf §675 Abs. 2 BGB .

    Gefällt mir 2 Ente gut, alles gut 1