2012-12-28 27 views
0
其他頁面

頁即時發佈到了下面的代碼,而Echo的正確cookie的無cookie值:

/* verify.php */ 

if ($age >= "21" && $location == "USA" && $cookie == "Y") { 

    $value = "1"; 
    setcookie("age_verified", $value, time()+60*60*24*30); 
    header("Location: ../portal.php?cookieset"); 
} 
elseif ($age >= "21" && $location == "USA") { 

    session_start(); 
    $_SESSION['age_verified'] = "1"; 
    header("Location: ../portal.php?sessionset"); 
} 

在portal.php我不能夠呼應的cookie,但會顯示出來罰款如果選擇了這個選項。

/* portal.php */ 

session_start(); 
echo $_SESSION["age_verified"]; 

結果爲「1」

/* portal.php */ 

echo $_COOKIE["age_verified"]; 

沒有結果

我想實現的東西像下面的代碼塊,但它不能正常工作,因爲cookie不回顯結果 /* portal.php */ session_start();

if($_SESSION['age_verified']!="1"){ 
    header("Location: index.php?no_session"); 
} 
elseif ($_COOKIE['age_verified']!="1"){ 
    header("Location: index.php?no_cookie"); 
} 
else{ 
    echo "";  
} 

我在想什麼?

+1

這不是你遇到的問題,但不要在'Location:'標題中使用相對路徑。雖然大多數瀏覽器與他們一起工作,但他們不被允許。 – Brad

回答

0

在我看來,$_SESSION['age_verified']!="1"||$_COOKIE['age_verified']!="1"正在檢查反對會議或cookie值。 Cookie值更加持久,因爲它們存儲在用戶的計算機上,會話值僅保留在瀏覽會話中。他們可能不會被設置。

事實上,看着你的邏輯verify.php你正在執行一個動作或另一個,而不是兩個。希望這可以幫助。

+0

好吧,我看到你在說什麼,但爲什麼我不能在portal.php上回顯cookie值,如果它設置在verify.php上? – Hector

+0

您是否檢查過「verify」頁面上是否明確設置了Cookie(在重定向之前輸出cookie)?你嘗試過'print_r($ _ COOKIE);'?瀏覽器肯定接受cookies? – oomlaut

+0

對verify.php是的,我在重定向測試前回顯cookie,值正常,但重定向後似乎cookie值丟失 – Hector