[PHP] header(); falsche Weiterleitung :(

SugarFairy

abgemeldet
23 April 2006
690
58
Beim Proggen meiner Loseseite bin ich auf ein kleines Problem gestoßen!:

Ich schreib es mal auf!

PHP:
<?
if(!$_SESSION['id']){
header("Location onlymember.php");
}else{
header("Location ".$PHP_SELF);
}
?>

Das Problem hierbei ist, es ist egal ob eine Session besteht, es wird immer nach onlymember.php weitergeleitet :( Weiss nicht was ich da falsch gemacht habe!
 
Beim Proggen meiner Loseseite bin ich auf ein kleines Problem gestoßen!:[...]

Das Problem hierbei ist, es ist egal ob eine Session besteht, es wird immer nach onlymember.php weitergeleitet :( Weiss nicht was ich da falsch gemacht habe!

Ist $_SESSION['id'] gesetzt ? Du überprüfst ob $_SESSION['id'] === false und leitest dann nach onlymember.php weiter. Dort wird vermutlich der Fehler liegen. edit: du wolltest bestimmt empty() oder isset() benutzen.

Hinter Location sollte übrigens noch ein ':'.

Gruß
 
Debugging: Hilfe, da ist ein Fehler! ;)

Sei froh, dass der Browser überhaupt umleitet. Ein fehlender Doppelpunkt kann fatal sein.

Des Weiteren muss gemäß den HTTP-Spezifikationen die URL, die du angibst, eine absolute URL sein. D.h. du darfst nicht schreiben
PHP:
header("location: script.php");
, sondern
PHP:
header("location: https://www.example.com/script.php");
.
 
Zuletzt bearbeitet:
** No fullquoting :hand: ** edit by theHacker

Der : ist im Script drinne, den hab ich jetzt nur hier vergessen einzutippen :)
 
PHP:
<?
if(empty($_SESSION['klammid'])){ header("location: www.google.de");  }
if(isset($_SESSION['klammid'])){ header("location: ".$_SERVER['PHP_SELF']);  }
?>

Gibt HTTP Error Seite aus! HAt nicht jemand für mich ne Lösung? Ich verzweifel an der einfachsten Sache :(
 
PHP:
<?
session_start();
if(!$_SESSION['klammid']){
header("location: media.php");

}else{
header("location: ".$PHP_SELF);

}
?>

Funktionirt zwar aber das laden der daten.php Seite dauert laaaaannnnggeee!
 
Steht das denn so in der daten.php? Dann wird ja immer wieder auf sich selbst umgeleitet, was klar lange dauert. Brauchst Du denn wirklich beide Weiterleitungen oder reicht nicht auch die eine, wenn man nicht eingeloggt ist?
 
Steht das denn so in der daten.php? Dann wird ja immer wieder auf sich selbst umgeleitet, was klar lange dauert. Brauchst Du denn wirklich beide Weiterleitungen oder reicht nicht auch die eine, wenn man nicht eingeloggt ist?

Du hilfst mir jetzt zum zweiten mal erfolgreich!

PHP:
<?
session_start();
if(!$_SESSION['klammid']){
header("location: media.php");
}
?>

Klappt super :)

Ich hatte mit PHP_SELF ja immer wieder die selbe Datei aufgerufen, kein Wunder das wird nix :)
 
:doh: Die Zwischenablage ist dir aber bekannt, oder? :ugly: Noch besser wäre es ja andersrum, richtige Lösung aus dem Forum falsch ins Programm tippen und behaupten, dass es nicht geht ;)

Es funktionierte schon, ich hab nur den Fehler mit der Session gemacht und hatte den das PRoblem das das Script die Seite immer wieder neu geladen hat! Aber naja, wieder etwas gelernt was man so schnell nichtmehr vergisst!
 
Des Weiteren muss gemäß den HTTP-Spezifikationen die URL, die du angibst, eine absolute URL sein. D.h. du darfst nicht schreiben
PHP:
header("location: script.php");
, sondern
PHP:
header("location: www.example.com/script.php");
.
Und wo ist das HTTP? *eg* Deine zweite Variante wird so nicht funktionieren, da der Browser mit 100%iger Wahrscheinlichkeit die Datei nicht findet, denn er wird in https://www.example.com/www.example.com/script.php danach suchen. (Ich bin jetzt davon ausgegangen, dass header() auf example.com aufgerufen wird.)
Also immer brav das Protokoll mit angeben.