2012-03-26 20 views
0

also habe ich eine einfache Benutzeranmeldung Website, und ich möchte ein Cookie setzen, so dass wenn sie zurück auf die Website kommen, es wird sie in den Mitgliederbereich und nicht die Hauptseite, eine Art wie ein "erinnere mich "Funktion, die Benutzer in einen Mitgliederbereich umleitet, wenn ein Cookie gesetzt ist.PHP Cookie richtige Art und Weise umzuleiten?

Problem Ich stehe vor: Der PHP-Code direkt vor dem HTML-Code wird nicht auf die member.php Seite umgeleitet, obwohl der Cookie gesetzt ist!

Hinweis: Ich benutze nur Teile des Codes, und nicht den gesamten Code/andere Dateien, um die Frage zu vereinfachen.

hier ist mein Code:

main.php (dies ist die Haupt-Seite, und auch, wo die Log-in-Form ist, aber in der Form log ist nicht gezeigt)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 
<?php 
    //Checks if there is a login cookie 
    if(isset($_COOKIE["blablabla"])) //if cookie is set 
    { 
     header("Location: www.website.com/member.php"); //redirect to member.php 
    } 
    else 
    { 
     //otherwise, redirect to nocookiefound.php 
     header("Location: www.website.com/nocookiefound.php"); 
    } 
?> 
<html> 
    <body> 
     <?php 
      echo "Welcome " . $_COOKIE["blablabla"] . "!<br />"; 
      //I ran a echo test to see if cookie is still there, and it is. 
     ?> 
    </body> 
</html> 

Also meine Frage Kann meine Weiterleitung so funktionieren, wie sie ist?

Ich muss etwas falsch machen, weil es nicht zu member.php umleitet, obwohl der Cookie den richtigen Wert enthält.

Also, wenn ich ursprünglich in der members.php Seite war, nachdem ich mich eingeloggt habe, dann geh zurück zu main.php, es SOLLTE mich zu members.php umleiten, aber es nicht, es bleibt nur bei main. php. Wer weiß was los ist? Ich würde all die Hilfe schätzen, die ich bekommen kann. Danke

Antwort

0

Ebenso wie @Dogbert sagt, ist Ihre Weiterleitung ungültig. Versuchen Sie:

header("Location: http://www.website.com/member.php"); 
+0

Ja, und vielleicht fügen Sie den "CODE" der Weiterleitung sollte besser sein. – DonCallisto

1

Der PHP-Code sollte das erste Ding auf der Seite sein, da Sie eine Umleitung "Kopfzeile" senden. Verschieben Sie es vor die Doctype-Deklaration.

+1

ganz zu schweigen von dem fehlenden "Exit" der Rest des PHP-Codes wird noch laufen – AD7six

0

Zusätzlich zu den anderen Antworten, legte ein exit(); nach den Kopfzeilen. Es ist möglich, ein Skript zu schreiben, das die Header ignoriert, wodurch der andere Code versehentlich ausgeführt wird.

Benutzer verwenden häufig Header, um Verwaltungsbereiche zu schützen, ohne dies zu bemerken.

Verwandte Themen