mehrere Pages mit Session includen

terravotion

Erfahrenes Mitglied
Guten Morgen/Abend

Ich habe mir ein kleines ControlPanel gebastelt für meine Website... Heisst, ich habe den grundlegenden Aufbau mit ner Tabelle gemacht und in die einzelnen Zellen werden die entsprechenden siten included.

Das Problem ist nun, wenn ich auf jeder Seite diese Überprüfung durchführe, dass diese Meldung mit den bereits gesendeten Headers komt, weil vorhehr jah noch Code ist.

Wenn ich es auf der main.php gaaanz oben hinschreibe sind die einzelnen Seiten verfügbar, wenn ich mich schön einlogge, ich kann jedoch direkt den Pfad anwählen und tata, ich kann dennoch auch ohne Berechtigung arbeiten.

Wie kann ich dieses Problem lösen?

Grüsse,
Hunab
 
PHP:
<?php
if ($eingeloggt === true){
  // htmlzeug + includes etc...
} else{
  header('Location: login.php');
}
?>

So vielleicht?
 
Moin

Am besten erstellst du eine Page wie z.B. checkuser.php die dan etwa so aussieht:

PHP:
<?php
session_start ();
if (!isset ($_SESSION["user_id"])) 
{
    header ("Location: login.php");
}
?>

Mit $_SESSION["user_id"] bestimmt du die eindeutige Idenfizierung eines User. Beachte jedoch, dass diese Variabel beim Login registriert werden muss.

Nun kannst du bei jeder Datei ganz zuoberst (vor jeglichem andern code) includen. Dann solltest du das Headerproblem nicht mehr haben.

Gruss

FG
 
Starte die Sitzung am besten in der Haupt-Skriptdatei und puffere jegliche Ausgabe (siehe Funktionen zur Ausgabesteuerung). Nun kannst du Fish-guts’ Vorschlag in einer leicht angepassten Form verwenden:
PHP:
<?php

	if( session_id() && !isset($_SESSION['user-id']) ) {
		ob_end_clean();
		header('Location: http://example.net/login.php', true, 403);
		exit;
	}

?>
 
Zurück