PHP: mit if-Bedingung neue Seite öffnen

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Entweder:

header('Location: index.php');
exit();

(dabei musst du drauf achten dass vor dieser Stelle im Programmcode noch keine Textausgabe passiert sein darf)

oder:

echo('<meta http-equiv="refresh" content="0;url=index.php" />');

(das sollte aber am Ende dann im

Teil des generierten HTML-Quellcodes stehen)

cHUCKn0RRlS 
Beitragsersteller
 16.02.2013, 21:59

habe das zweite genommen, funktioniert wie erwünscht!

Vielen Dank! (morgen gibts Stern)

0

index.php ist IMMER die startseite, außer du regelst das in htaccess anderst, aber index.php sieht jeder und wenn du ein pw eingibst wirst du auf eine bestimmte seite weitergeletiet, ich nenne sie jetzt mal datei.php

header("Location: datei.php");

WICHTIG: in der datei.php muss auch ein sicherheitsmechanismus sein, den wenn jemand die seite so aufruft, kommt er auch drauf ;-) am besten machst du das so:

index.php

<?php
session_start();
if($_POST['passwort'] == "XYXYXY"){
$_SESSION['angemeldet'] = true;
header("Location: datei.php");
}else{
echo "formular";
}
?>

datei.php

<?php
session_start();
if($_SESSION['angemeldet']!=true){header('Location:alteDatei.php');}
?>
<html>
...
</html>

WICHTIG: header("Location: datei.php"); MUSS vor JEGLICHER Ausgabe stehen! Sobald irgend eine Ausgabe erfolgt ist, funktioniert header(); nicht mehr ;-)

Dir ist aber schon klar, daß DANN die Zielseite mitnichten "geschützt" ist?

Jeder, der schon mal vom Hörensagen (oder aus Logs oder weil jemand (wie z.B. Google) einen Link irgendwo gesetzt hat) was von der Zielseite mitgekriegt hat (oder auch blind auf Unterseiten testet - wie Hacker), kann sie aufrufen...

Vermeiden kannst Du das nur, wenn Du für JEDES zu schützende Dokument bei JEDEM Abruf den Anmeldestatus prüfst.