Freigabe von Links für eingeloggte User

romeo046

Grünschnabel
Hallo,
ich suche schon seit einiger Zeit für eine Beispiellösung für mein Problem, habe aber noch nichts gefunden, was mich schlauer gemacht hätte.... Wenn ich etwas übersehen habe schickt mir doch bitte einen Link :)

Nun zu meinem Problem: Ich gelange von einer Startseite (wenige anklickbaren Links) zu Login.html welche durch login.php überprüft wird und bei Datenübereinstimmung den User auf sein Profil leitet. Soweit so gut. Nun möchte ich aber, wenn der User auf dem "Home-Button" drückt, dass dort die Links funktionieren.
Das hab ich jetzt erstmal so gelöst, dass ich die Startseite praktisch 2x angefertigt habe.
Auf die mit den funktionierenden Links kommt man nur vom Profil. Die andere kann jeder sehen.
Nur erscheint mir das reichlich unelegant. Gibts da was schöneres?

Ich dachte mir sowas wie eine Variable, welche in login.php ggf. auf true gesetzt wird. Nur ist das Problem, dass ich ja mehrere Seiten habe... oder kann ich die mit SESSION global machen und auf der Startseite die Links anklickbar machen?

Für evtl. Rechtschreib und Grammatikfehler entschuldige ich mich lieber mal. Es ist spät :D
Hoffe ich konnte mich dennoch verständlich ausdrücken.

Schöne nächtliche Grüße :)
 
Setzte ich dann die SESSION in meiner login.php auf einen Wert? wie wird der übergeben? Muss ich dafür eine Spalte in meiner DB einrichten?
 
In jeder Datei musst du am Anfang session_start(); aufrufen. Des Weiteren darfst du vor diesem Aufruf (und anderen, die Header setzen) keine Ausgabe erzeugen.

In der DB musst du nichts einrichten, wenn du beim Standard Session-Handler verbleibst, welcher die Sessions in Dateien speichert.
In der login.php schreibst du Folgendes:
PHP:
// Nutzer ist autorisiert

// Gegen Session Hijacking, siehe z. B. http://stackoverflow.com/a/8134630/603003
session_regenerate_id();
$_SESSION['loggedIn'] = true;
 
Hallo ComFreek,
Soweit hab ich das verstanden, nur weiß ich nicht, wie ich das in der profil.html u.a. aufrufe? Oder bleibt das so und wird per destroy bei logout "zerstört"?
 
profil.html? Du kannst nur bei PHP-Dateien auf Sessions zugreifen. (Außer du hast deinen Server entsprechend für *.html-Dateien konfiguriert, was ich bezweifle.)

Du kannst in jeder Datei, vorausgesetzt, dass du session_start() am Anfang aufgerufen hast, prüfen, ob der Nutzer eingeloggt ist:
PHP:
if ($_SESSION['loggedIn'] === true) {
  // eingeloggt!
}
Am besten packst du das in eine Funktion.
 
Zurück