PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : location header


franzi
27.09.2007, 15:57:53
Hallo,
ich habe mal wieder ein Problem:
ich habe einen passwortgeschützeten Bereich eingerichtet, der aus mehreren Seiten besteht. Die Funktionsweise habe ich mir folgendermaßen vorgestellt:
Am Anfang der passwortgeschützten Seite wird abgefragt ob eine Session gesetzt ist, falls nicht, wird der User per header auf ein php-script umgeleitet, auf dem er sich einloggen kann. Nach erfolgreichem Login, wird die Session gesetzt und der User soll wieder auf die Seite zurückgeleitet werden, von der er ursprünglich gekommen ist. Dazu übergebe ich den Namen der Seite per GET. Mein Problem ist jetzt, dass die Umleitung per header von der login.php zurück auf die Ursprungsseite nicht funktioniert. Hier ist der Code dazu:

Passwortgeschütze Seite: (funktioniert)

if (!isset($_SESSION["anrede"]) OR !isset($_SESSION["name"]))
{header ("Location: http://www.seite.de/member/login.php?seite=$seite");}


Login-Script:(Umleitung Funktioniert nicht)

if($fehler==0)
{
$seite=$_GET["seite"];

$_SESSION["anrede"] = $data["anrede"];
$_SESSION["name"] = $data["name"];

//echo "Die Schleife funktioniert";

header("Location: http://www.seite.de/member/".$seite.".php");
}


Danke für eure Hilfe.

Raketenmann
27.09.2007, 16:07:29
Verrätst du auch was genau nicht funktioniert?

Passiert gar nichts, kommt eine Fehlermeldung? Welchen Wert enthält $seite?
Findet vor der Zeile
if($fehler==0)
irgendeine Ausgabe statt?

franzi
27.09.2007, 16:25:12
Tschuldigung, scheinbar hab ich nicht genau genug erklärt, was da passiert bzw. passieren soll.
Also die passwortgeschützte Seite übergibt ihren Namen per GET in der Variable $seite. Wenn der User also zum Beispiel von der Seite bildmaterial.php kommt, dann ist $seite="bildmaterial".
Im Login-Script kann sich der User über ein Formular anmelden. Die Werte aus den Formularfeldern werden mit der Datenbank verglichen: ist der User registriert, sprich tritt kein Fehler auf, wird die Session gesetzt. Und nun soll der User auf Seite, von der er gekommen ist, zurückgeleitet werden. (In diesem Beispiel also bildmaterial.php)
Diese Umleitung funktioniert aber nicht. Anstatt zurück auf bildmaterial.php umzuleiten passiert nach Absenden des Formulars leider gar nichts.

Raketenmann
27.09.2007, 16:33:25
Ich hatte das schon verstanden, aber trotzdem danke...

header() funktioniert nicht, wenn bereits etwas ausgegeben wurde - deshalb die Frage!

Was genau heißt nichts? Weiße Seite?

Was passiert wenn du die Kommentarzeichen in der echo Zeile entfernst, wird der String ausgegeben oder nicht?

Wenn nicht, vielleicht ist $fehler ungleich 0 ....

franzi
27.09.2007, 16:45:24
Eine Ausgabe findet vor header() eigentlich nicht statt? Oder zählt der html head schon als Ausgabe? Das werd ich mal ausprobieren.

Der String wird allerdings ausgegeben, wenn ich die Kommentarzeichen entferne. Den hatte ich eingefügt um auszuprobieren, ob $fehler gleich 0 ist und die Schleife funktioniert, aber da stimmt alles...

Aber ich werd jetzt mal den html head nach unten verschieben, vielleicht liegts ja daran

Also danke schonmal für deine Hilfe.

franzi
27.09.2007, 17:19:55
Danke, Raketenmann ^_~

Es lag tatsächlich daran, dass der html head vor dem Befehl header() stand. Jetzt wird umgeleitet ... nur der Wert aus $seite wird noch nicht übernommen...
Aber wo's da hakt, find ich schon noch raus.