Daten innerhalb einer Webseite vergeben?
Ich habe zu Übungszwecken ein kleines einfaches Login System erstellt (Beispiel Pfad: seite.de/login) und ob die Person eingeloggt ist und als wer soll übergeben werden an einen anderen Teil der Seite (Beispiel Pfad: web.seite.de/ToDoListe) aber Season oder Cookies habe ich auf alle möglichen weisen erfolglos versucht, hat hier jemand eine Lösung?
Versucht habe ich das Setzen mit:
$_SESSION['logged_in'] = true;
$_SESSION['username'] = $username;
$_SESSION['last_login'] = time();
$expireTime = time() + 3600 * 24 * 7;
setcookie('user_auth', $username, $expireTime, '/');
setcookie('user_auth', $username, $expireTime, '/', 'sub.domain.de');
Und überprüft habe ich es:
echo '<pre>';
print_r($_COOKIE);
echo '</pre>';
session_start();
echo '<pre>';
print_r($_SESSION);
echo '</pre>';
Ergebnisse mit den Beispielpfaden:
Bei "seite.de/login" Ist es da aber wenn ich zu "web.seite.de/ToDoListe" wechsle ist nichts mehr da! Versucht habe ich es auf mehreren Browsern und im internet habe ich nichts gefunden was meinen Fehler erklärt.
2 Antworten
Ich würde dir empfehlen eine vernünftige Middle Ware zu nutzen die das bei jedem Aufruf checkt. Du schreibst hier nicht ob du irgendein Framework nutzt oder welche Sprache (ich denke PHP wegen den Themen), moderne Frameworks bieten für so etwas Lösungen.
Ansonsten funktioniert das schon über die session, aufgrund der Frage kann man dir ja jetzt aber nicht sagen was du falsch machst. Cookies ist etwas… naja. Solltest du wissen was du tust. Da gäbe es schon pitfalls was du Security Technisch falsch machen kannst.
Ich würde dir empfehlen dich mit Frameworks, Libraries bzw. Middlewares für authentication zu beschäftigen oder du stellst deine Frage noch mal und postest den Code sauber formatiert dazu (oder verlinkst ein Git repo oder einen Paste), bzw. zumindest ein minimal Beispiel an dem man nachvollziehen kann was falsch läuft.
Ah, ich denke du handelst deine Cookies falsch mit deiner Hauptdomain und Subdomains.
https://stackoverflow.com/questions/18492576/share-cookies-between-subdomain-and-domain
Ich frage mich überhaupt warum du eine andere Subdomain nutzt für deine Todo Liste.
Ich würde dir für Authentication empfehlen, dass du vielleicht so was wie OpenID Connect nutzt und dich dann zentral an einer Stelle anmeldest, und dafür einfach eine Library.
SESSION funktioniert auch nicht, die subdomain ist wichtig aber ich möchte das man sich zentral anmelden kann für alles! Und das anmelde System möchte ich gerne selbst machen da ich Spaß am programmieren habe aber mir Ideen fehlen
Es geht doch im verlinkten Post darum, wie man die Session auf verschieden Subdomains verfügbar macht. Hast du dir das nicht angesehen?
Die 4 ersten Wörter nicht beachten, das war nur ein Fehler und ich habe meinen Fehler gefunden, über dem „<?php“ war noch „<!DOCTYPE html> weswegen es irgendwie nicht funktioniert hat
Ich muss jetzt etwas vage antworten. (ungeprüft)
Du rufst zweimal "setcookie();" auf. Ich vermute, dass das zweite Mal den Inhalt des ersten Aufrufs überschreibt. Dann allerdings sollte der Session-Inhalt der Subdomain verfügbar sein.
Setz also nur einmal "setcookie();" und füge als Domain ".domain.de" ein. Der führende Punkt sollte auch eine Cross-Subdomain-Verwendung machbar machen.
Problematisch sehe ich auch, dass "session_start();" erst so spät aufgerufen wurde. Hier würde ich noch einmal an erster Stelle des ersten Codeschnipsels diesen Befehl einfügen und auf das zweite Mal verzichten. (das wäre allerdings nicht so problematisch, wenn dieser Aufruf zweimal erfolgte, weil beim Parsen dann lediglich ein Fehler registriert und der zweite Aufruf ignoriert wird)
Ansonsten ist hier noch etwas weiterführende Literatur zu dem Problem: https://stackoverflow.com/questions/7497864/does-php-set-by-default-the-session-cookie-for-all-subdomains
Entschuldigung, ich habe die frage nochmal erweitert