2012-03-26 122 views
0

所以我做了一個簡單的用戶登錄網站,我想設置一個cookie,以便當他們回到網站時,它會把他們帶到會員區而不是主頁面,有點像「記住我「功能,如果設置了cookie,將用戶重定向到成員區域。PHP cookie正確的重定向方式?

問題我正面臨着:即使設置了cookie,html代碼也沒有重定向到member.php頁面之前的PHP代碼!

注:我只是使用部分代碼,而不是整個代碼/其他文件來簡化問題。

這裏是我的代碼:

main.php(這是主要的網頁,並在登錄形式,但登錄形式未顯示)

<!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> 

所以我的問題是,我的重定向可以按照它的方式工作嗎?

我必須做錯事,因爲它沒有重定向到member.php,即使cookie響應正確的值。因此,如果我在登錄後最初在members.php頁面中,然後返回到main.php,它應該將我重定向到members.php,但它不會,它只是停留在main.php上。 PHP。任何人都知道發生了什麼事?我會很感激所有我能得到的幫助。謝謝

回答

0

以及@Dogbert所說的,你的重定向是無效的。嘗試:

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

是的,也許加上重定向的「CODE」應該會更好。 – DonCallisto 2012-03-26 10:40:10

1

PHP代碼應該是頁面上的第一件事,因爲您發送重定向「標題」。將其移至Doctype聲明之前。

+1

更不用說缺少「退出」其餘的php代碼仍然會運行 – AD7six 2012-03-26 10:38:33

0

除了其他答案,放一個exit();在標題行之後。可以編寫一個忽略標題的腳本,因此無意中運行其他代碼。

人們經常使用頭部來保護管理區域,但沒有意識到這一點。