Website-Login und Forum-Login "verknüpfen"

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • Hallo und guten Tag!


    Wie ich in meinem Thema zu einem Problem bereits erwähnt habe, tauche ich gerade ich in die Welt der dynamischen Webseiten ein. Meine neu erworbenen Kenntnisse über das Zusammenspiel von php und mySQL versuche ich in einer sogenannten "Test-Website" anzuweden, die ich theoretisch so entwickeln will, dass sie, fügt man entsprechenden Content ein, sofort online gehen könnte. Ich habe wahnsinnigen Spaß daran und sehe es als eine Art von "kreativer Freizeitbeschäftigung". Nachdem der HTML- und CSS-Teil fürs erste abgeschlossen ist, will ich nun php und mySQL einbauen und meine erworbenen Kenntnisse anwenden. Seht es mir also bitte bitte nach, dass ich noch keine richtige praktische Erfahrung aufweisen kann - sprich: ich bezeichne mich als Anfänger und bitte deshalb auch um entsprechende Nachsicht.


    Nun zu meinem Problem, wozu ich allerdings noch kurz etwas ausholen muss. Um die Anwendungen zu testen, habe ich mir mit XAMPP (bin zufrieden damit und es reicht vollkommen aus) auf meinem Rechner eine "Entwicklungsumgebung" aufgebaut. Da mein Konzept vorsieht, die Test-Website mit einem Forum zu verknüpfen, habe ich auch ein "WBBLite" installiert und habe nun schon eine teilweise Vorstellung zu Problemlösung.


    Nun würde ich es gerne möglich machen, dass man sich auf der Website mit den Login-Daten des Forums anmelden kann (z.B. für Kommentare oder zum Schreiben von Neuigkeiten). Nachdem ich das Forum installiert habe, habe ich mich auch gleich in der Datenbank umgeschaut und bin auf die Tabelle "wcf1_user" gestoßen. (Für die entsprechenden Rechte, wer nachher Neuigkeiten verfassen darf, habe ich auch schon die entsprechenden Relationen zwischen den Tabellen ausgemacht, sprich, wo ist gespeichert, wer in welcher Gruppe ist). In "wcf1_user" ist neben dem Login-Namen das Passwort enthalten. Die Verschlüsselungsmethode konnte ich auch schon ausfindig machen, sodass es hier aus meiner Sicht auch keine Probleme gibt. Damit müsste man sich ja problemlos anmelden können (oder???).


    Aber nun zum konkreten Problem: Die Session. Auf der Website frage ich beim Login, ob die Seite sich den Nutzer merken soll. Wenn ja, soll neben einer gestarteten Session ein Cookie angelegt werden, nachdem zu Beginn jeder Seite gefragt wird und gegebenenfalls auf Basis dieses eine Session gestartet werden und der User somit problemlos wieder angemeldet werden kann. Diese Funktion gibt es ja auch im WBBLite. Mein Plan: Das Forum muss ja auch irgendwie fragen, ob es ein Cookie gibt, und den User entsprechend - natürlich für diesen verborgen - anmelden und eine Session starten, sodass er gefühlt nie abgemeldet war. Meine Überlegung geht nun weiter: Wenn ich mich auf der Homepage anmelde, soll ich, wenn ich dann auf den dortigen Link zum Forum gehe, auch im Forum angemeldet sein. Das müsste man doch eigentlich so hinbekommen können: Man schaut, wie das Cookie bei der Anmeldung im Forum definiert wird, sprich, welche Variablen werden bei dieser "Anmeldung mit Erinnerung" wie gesetzt. Wenn man beim Login auf der Homepage diese Variablen identisch setzt, müsste doch eine Anmeldung im Forum und ein anschließender Homepage-Besuch bzw. eine Anmeldung auf der Homepage und ein anschließender Forum-Besuch ohne zweites Login möglich sein. Oder? Oder übersehe ich da was oder habe einen Denkfehler? Da ich mich aber mit dem Code des Forums überhaupt nicht auskenne, blieb es beim obenstehenden "Plan". Ich hoffe, dass mir vielleicht jemand helfen kann.


    Meine Fragen wären also:
    1. Funktioniert diese Vorgehensweise? Was muss ich ändern? Übersehe ich ein grundlegendes Problem?
    2. Wie funktioniert denn das Setzen des Cookies im Forum genau und welche Code-Teile muss ich nehmen?


    Ich hoffe, ich konnte mein Problem ausreichend und verständlich schildern. Ansonsten bitte ich um Rückfragen.


    Ich bedanke mich schonmal im Voraus: Vielen Dank!


    Viele Grüße,
    Vegeta

  • Da ich noch weniger praktische Erfahrung in dieser Richtung gesammelt habe als du, kann ich dir lediglich Vermutungen mitteilen, aber ich nehme mal an, dass zwei unterschiedliche Webseiten (was HP und Forum ja theoretisch gesehen sind) nicht den selben Cookie abspeichern bzw. verwenden können. Es reicht ja nicht, die selben Daten abzuspeichern, sondern du müsstest auf der HP genau den Forums-Cookie verwenden.
    Das funktioniert dementsprechend also nur, wenn du das Forum als Subdomain behandelst, dann musst du den exakt gesetzten Cookie des Forums auslesen (einfach ausprobieren und im Browser anschließend anschauen) und auf der HP den selben Cookie verwenden. Damit sollte es machbar sein.

  • Hallo Mew1993,


    danke erstmal für deinen Beitrag. Dein Gedanke mit den unterschiedlichen Domains könnte natürlich stimmen. Ich dachte, wenn relative Links einbaue, reicht das vielleicht aus.


    Ich konnte nun beim "Auslesen" der Cookies sowie der Datenbank Folgendes in Erfahrung bringen:


    Beim Login mit "eingeloggt-bleiben", also mit Häckchen:
    - wird wcf_userID mit der UserID gesetzt
    - wird wcf_password gesetzt: Allerdings - es unterscheidet sich mit dem in der Datenbank gespeicherten und verschlüsselten Passwort. Meine Frage hierzu: Welche Verschlüsselung wird für den Cookie angewandt?
    - wird wcf_cookieHash gesetzt: In der Tabelle wcf1_session wird der Cookieinhalt als Primary Key gespeichert. Kann es sein, dass das so funktioniert?: Seite des Forums wird aufgerufen. Es wird geprüft, ob eine Session-ID vorhanden -> wenn nicht, dann wird eben eine neue in der DB angelegt. Die userID ist vorerst 0, bis sich der Besucher anmeldet. Dann wird die userID gesetzt und bleibt in der Tabelle gespeichert. Mit der SessionID ist nun eben der User verknüpft. Loggt er sich aus, wird die Spalte gelöscht. Geht er aus dem Forum (meldet sich aber nicht ab) und kommt später wieder, findet wieder die Prüfung statt: Cookies melden: SessionID vorhanden sowie UserId in Cookie stimmt mit dem in der Tabelle wcf1_session überein, dann bleibt Login bestehen. Evtl. noch Überprüfung des gespeicherten Passwortes (unklar wäre mir hier: Wird das Passwort nochmals "versalzen" und dann mit dem in der wcf1_user verglichen?)
    - wird wcf_boardLastActivityTime gesetzt: Scheint auch in der Tabelle wcf_session als Attribut aufzutauchen.


    Jetzt bin ich aber noch verwirrter als zuvor. Wie könnte ich das nun umsetzen? Soll ich beim Login auf der Homepage eine INSERT-INTO-Anweisung an wcf1_session starten und sozusagen eigenmächtig eine Session erzeugen mit den entsprechenden Attributen?


    Ich bitte um Hilfe! Vielleicht kennt sich der ein oder andere auf diesem Gebiet aus oder hat/hatte dasselbe Problem.


    Vielen, vielen Dank vorab!

  • Allerdings - es unterscheidet sich mit dem in der Datenbank gespeicherten und verschlüsselten Passwort. Meine Frage hierzu: Welche Verschlüsselung wird für den Cookie angewandt?


    Die Passwörter in den Cookies werden als singleSaltedHash gespeichert und zur Überprüfung mit der Datenbank erneut mit dem Salt versehen und gehashed.


    Ansonsten wäre es das einfachste, wenn du das WBB in deine Seite einbindest und den Cookie-Pfad korrekt setzt, dann sollte das ganze automatisch funktionieren.

  • Danke, TimWolla. Das versuche ich nachher gleich mal. Also einfach


    Code
    require("forum/global.php");


    D.h. ich setze diese Funktion im Content meiner Website ein?


    Wüsstest du vielleicht auch den anderen Weg, d.h. das Forum wird nicht eingebunden und das mit dem Login klappt trotzdem?


    Vielen Dank bisher!


    ---


    Update, 18:11 Uhr: Wenn ich das Forum mit "require" einbinden will, kommt zwar keine Fehlermeldung, eine "Session" wird wie beim normalen Aufruf einer Forumseite in der entsprechenden DB-Tabelle auch erstellt, jedoch wird nichts angezeigt. Weshalb?


    Falls ich nun richtig verstanden habe, ist das Problem, dass Cookies für z.B. test.te nicht für test.te/forum gelten (auch nicht, wenn ich von test.te auf /forum (also relativ) via Link springe???), oder? Ginge denn folgende Methode: Man fügt "wcf1_session" beim Login auf der Homepage die jeweilige Session-ID der dort gestarteten Session hinzu (oder, wenn man den entsprechenden Schnipsel vom Forum hätte, eine andere Session-ID, wie sie das WBB eben generiert). Anschließend generiert man im Ordner forum, in dem das Forum enthalten ist (also z.B test.te/forum) eine Datei, die aufgerufen wird, sobald man diesen Link anwählt (ähnlich einer index.htm, etc.). Diese Datei leitet einen via Header() an global.php weiter und erstellt nebenbei noch die Cookies die man für das Forum benötigt. Einziges Problem wird hier vielleicht sein: Übergabe der Daten von test.te auf diese Weiterleitungsseite. Via GET evtl. zu unsicher, oder, da das Passwort, zwar verschlüsselt, weitergegeben wird.


    Ihr seht, ich spekuliere hier ein bisschen rum und zerbreche mir den Kopf ... aber, ob das nun so läuft oder daran liegt ... ich weiß es leider nicht :( .

  • Da ich nun nicht weiß, ob mein Update bemerkt wird/wurde, schreibe ich den Beitrag nochmals. Bitte fügt die Beiträge zusammen oder löscht den oberen, damit alles regelkonform bleibt. Vielen Dank!


    ---


    Wenn ich das Forum mit "require" einbinden will, kommt zwar keine Fehlermeldung, eine "Session" wird wie beim normalen Aufruf einer Forumseite in der entsprechenden DB-Tabelle auch erstellt, jedoch wird nichts angezeigt. Weshalb?


    Falls ich nun richtig verstanden habe, ist das Problem, dass Cookies für z.B. test.te nicht für test.te/forum gelten (auch nicht, wenn ich von test.te auf /forum (also relativ) via Link springe???), oder? Ginge denn folgende Methode: Man fügt "wcf1_session" beim Login auf der Homepage die jeweilige Session-ID der dort gestarteten Session hinzu (oder, wenn man den entsprechenden Schnipsel vom Forum hätte, eine andere Session-ID, wie sie das WBB eben generiert). Anschließend generiert man im Ordner forum, in dem das Forum enthalten ist (also z.B test.te/forum) eine Datei, die aufgerufen wird, sobald man diesen Link anwählt (ähnlich einer index.htm, etc.). Diese Datei leitet einen via Header() an global.php weiter und erstellt nebenbei noch die Cookies die man für das Forum benötigt. Einziges Problem wird hier vielleicht sein: Übergabe der Daten von test.te auf diese Weiterleitungsseite. Via GET evtl. zu unsicher, oder, da das Passwort, zwar verschlüsselt, weitergegeben wird.


    Ihr seht, ich spekuliere hier ein bisschen rum und zerbreche mir den Kopf ... aber, ob das nun so läuft oder daran liegt ... ich weiß es leider nicht :( .