@ iop
Hallo iop,
Du bringst da scheinbar so einige Begriffe durcheinander, was es für Helfer nicht einfacher macht, deinen Beitrag nachzuvollziehen.
Wishlist soll sicher Whitelist heissen, oder?! Auch sprichst Du von Post, übergibst die User-ID aber per URL, also Get.
Zu deiner Frage...
Die Vorgehensweise sieht für gewöhnlich so aus:
Du hast eine Datenbankstruktur in der User Accounts, Gruppen und Berechtigungen festgelegt werden. User werden Gruppen zugeordnet (z.B. Gast, Mitglied, Admin) und Gruppen werden Berechtigungen zugeordnet (Gast darf lesen, Mitglied darf lesen und schreiben, Admin darf lesen, schreiben und Mitglieder bearbeiten). Bei der Anmeldung kannst Du einen Benutzer ja eindeutig identifizieren, indem Du User-ID, Gruppe und Berechtigung ausliest. Diese Info hältst Du in der Session fest. Beim Aufruf einer Seite, z.B. eines Profils, wird für das Profil festgelegt, welche User oder Gruppen Zugriff darauf haben dürfen und diese Zugriffsberechtigung wird mit den in der Session hinterlegten Daten verglichen. Das alles geschieht auf dem Server und ist somit sicher. Du musst lediglich sicherstellen, dass der angemeldete User auch der ist, den er vorgibt zu sein - das ist die Aufgabe des Login Scripts.
Beantwortet das deine Frage?
@ puzzler
Hallo puzzler,
vielen Dank für die netten Worte. Es freut mich zu lesen, dass dir die Tutorials gefallen.
Zu deiner Frage...
Eine Möglichkeit das zu realisieren wäre es, auf jeder geheimen Seite, beim betreten der Seite, die Adresse festzuhalten. Da ohnehin schon eine Session gestartet wurde bietet es sich an, die Adresse dort abzulegen. Kopf einer geheim.php:
PHP-Code:
<?php
ini_set( 'session.use_only_cookies', '1' );
ini_set( 'session.use_trans_sid', '0' );
// Session starten
session_start();
$_SESSION['zuletzt_besucht'] = $_SERVER['REQUEST_URI']
Ist man auf der geheim.php nicht eingeloggt, wird man zum Login umgeleitet. Kopf der login.php:
PHP-Code:
<?php
// Fehlermeldungen unterdrücken
error_reporting( 0 );
// Erzwingen das Session-Cookies benutzt werden und die SID nicht per URL transportiert wird
ini_set( 'session.use_only_cookies', '1' );
ini_set( 'session.use_trans_sid', '0' );
// Session starten
session_start();
if (isset( $_SESSION['zuletzt_besucht'] ))
{
$zuletzt_besucht = $_SESSION['zuletzt_besucht'];
}
Das Umladen muss hier sein, weil weiter unten im Script die Session ggfs. zurückgesetzt wird und der Inhalt von $_SESSION['zuletzt_besucht'] verloren geht.
Weiter unten im Script, nach erfolgreichem Login, muss der Redirect angepasst werden:
PHP-Code:
// Auf geheime Seite weiterleiten
if (isset( $zuletzt_besucht ))
{
header( 'location: ' . $zuletzt_besucht );
exit
}
else
{
header( 'location: geheim_profi.php' );
exit
}
So, das sollte als Lichtschalter genügen.