2009-08-20 4 views
1

Wenn sich eine Person auf meiner Website registriert oder sich anmeldet, wird sie an "thanks.php" gesendet.Sichere eine "Danke" -Seite gegen nicht angemeldete Benutzer

Die Seite prüft, ob Sie eingeloggt sind oder nicht und wenn ja, was Sie tun können und wenn nicht, erhalten Sie einen Link zur Seite register.php.

Aber jeder kann seinen eigenen Cookie machen und das Skript so überlisten.

Wie schütze ich mich davor?

Eine Sache, an die ich dachte, war zu überprüfen, ob die $_SESSION['session_id'] in der Datenbank vorhanden ist. Soweit ich weiß, können Sie das nicht selbst generieren und selbst wenn Sie könnten, würden Sie Datenbankzugriff benötigen, um einen zu finden.

Ich bin mir nicht sicher aber hat jemand irgendwelche Ratschläge oder Erfahrungen über diese Art von "Danke" -Seiten?

Antwort

5

Sie können keine Sitzungsdaten oder Datenbankdaten generieren, ohne Zugriff auf den Server zu haben. Also, eine sichere Möglichkeit, dies zu tun, wäre entweder ein SESSION-Cookie mit einer Variablen gesetzt, und überprüfen Sie dies.

session_start(); 
$_SESSION['logged_in'] = true; 


session_start(); 
if(!isset($_SESSION['logged_in'])) 
{ 
    header("Location: youarentsupposetobehere.com"); 
} 
+0

Kein Grund die ID-Variable einzigartig ist sein verwalten. Wie Sie sagen, alles in der SESSION ist auf dem Server – Eli

+0

Hoppla .. da gehen wir. –

2

Nun ja, wenn die Leute sich anmelden, sollten Sie nicht Setzen eines Cookies, die loggedin=true oder so sagt.

sollten Sie setzen stattdessen $_SESSION['loggedin'] = TRUE PHP dauert in der Regel darauf, die Cookies zu sichern, die die Sitzung automatisch

+0

Sitzungscookies laufen tatsächlich ab, wenn Sie Ihren Browser herunterfahren. Müssen Sie Ihren Computer nicht einmal herunterfahren, nur den Browser. Durchsuchen Sie die php.ini-Datei nach dieser Variablen: session.cookie_lifetime. Seine Bedeutung ist die darüber liegende Zeile erklärt. – KdgDev

+0

Ja, die Sitzungsdaten sind standardmäßig nur für eine Sitzung gültig :) – Eli

Verwandte Themen