RÜckverlinken Nicht Zulassen

tobiastt

Erfahrenes Mitglied
Hallo,

ich habe mit PHP mehrere Seiten erstellt. Jetzt möchte ich verhindern, dass der Nutzer einfach eine Unterseite von der INDEX.PHP aufrufen kann. Wie realisiere ich das

Danke

Gruß Tobi
 
na ich habe eine Index.php von der aus kommt man per Link auf 1Seite.php oder 2Seite.php, wenn ich im Browser eingeben2Seite.php zeigt er mir diese an soll er aber nicht Er soll mich dann auf Index.php schicken

Danke

Tobi
 
Verwende dateibasierende Sessions, welche du auf der index.php startest....keine Session vorhanden...auf index.php umleiten.
 
index.php
PHP:
//an den Anfang der Datei index.php, vor <html>, echo's oder sonstiges...
<php
session_start();
$_SESSION['wasOnIndex'] = true;
?>
// Rest von index.php...

seite1.php, seite2.php, etc...
PHP:
//an den Anfang der Dateien
session_start();
if(!isset($_SESSION['wasOnIndex']) || $_SESSION['wasOnIndex']!=true) header("Location: index.php");

Hoffe es klappt,
mfg mAu
 
Auf allen Seiten füge zu Beginn Folgendes ein:
Code:
ini_set('session.use_cookies',0);
session_start();
Damit wird eingestellt, dass keine Cookies für Sessions verwendet werden, und eine Session gestartet.


Auf allen Seiten(ausser der index.php) füge danach Folgendes ein:
Code:
if(!isset($_SESSION['hallo'])){header('Location:index.php');}
Damit wird geprüft, ob eine Session-Variable 'hallo' existiert.

Diese wird auf der index.php gesetzt:
Code:
$_SESSION['hallo']=true;

..das wars schon:
kommt man auf eine Seite(index ausgenommen), und die Variable 'hallo' existiert nicht, wird man zur index.php weitergeleitet.
Wichtig ist dabei natürlich, dass du die Session-ID weitergibst.
Sollte in der PHP-Konfiguration session.use_trans_sid auf "1" gestzt sein, geht das automatisch, andernfalls musst du sie weitergeben, indem du sie an jedes Link/Formularziel deiner Seite ranhängst, ca. so:
Code:
<a href="seite.php?<?php echo SID;?>">
(SID ist dabei eine Konstante, welche die nötige Zeichenkette mit Sessionname und Session-ID enthält)
 
Sven Mintel hat gesagt.:
Auf allen Seiten(ausser der index.php) füge danach Folgendes ein:
Code:
if(!isset($_SESSION['hallo'])){
  header('Location:s_index.php');
  exit;
  }
Damit wird geprüft, ob eine Session-Variable 'hallo' existiert.
Ich würde noch das "exit;" hinzufügen - dann wird das Script an der Stelle abgebrochen.

Mamphil
 
das exit(); kannst du dir sparen, da bei dem header aufruf die Seite "sofort" weitergeleitet wird. zum exit(); kommt er nicht mehr...
 
aKraus hat gesagt.:
das exit(); kannst du dir sparen, da bei dem header aufruf die Seite "sofort" weitergeleitet wird. zum exit(); kommt er nicht mehr...
Sicher?

Der Befehl header('Location: http://sonstwas.de'); schickt den HTTP-Header, mit dem auf eine andere URL weitergeleitet wird. Anschließend wird (meinem Verständnis nach) der Rest des Scripts ausgeführt. Ggf. werden noch weitere Ausgaben an den Client gesendet (die allerdings nicht angezeigt werden, da vorher schon der Weiterleitungs-Befehl kam).

Vgl. dazu http://de.php.net/header :
PHP:
<?php
// Umleitung des Browsers:
header("Location: http://www.example.com/"); 
// Sicherstellen, dass nicht trotz Umleitung
// der nachfolgende Code ausgeführt wird:
exit;                                        
?>

Mamphil
 
Zurück