簡體   English   中英

在PHP中設置/檢查cookie的問題

[英]Problem setting/checking cookie in PHP

我有一個小型的基本網站,用戶只能在登錄時查看某些頁面。只有1個用戶名和密碼,因為該網站僅供少數人使用,安全性不是主要問題。 無論如何,當用戶輸入正確的用戶名和密碼並提交時,會在代碼中設置cookie並重新加載頁面。 但它仍然顯示內容,好像用戶沒有登錄。當我再次按下sumbit按鈕或只是單擊到另一個頁面時,內容顯示正確(導航欄中的更多項目)。 我無法找出為什么它不會第一次顯示這些項目。

登錄頁面的頂部:

    if (isset($_POST['reg'])){
    if ($form_errors = validate_form()) {
        show_form($form_errors);
    } else {
        logon();
    }
} else {
   show_form();
}

頁面內容(函數show_form)

    <?php
    if( isset($_COOKIE['logedon'])){
        echo '<p>You are now logged on</p>';
        }
    else{
          //shows form containing: <input type="hidden" name="reg" value="1"/>
    }
?>

最后是logon()函數

function logon(){
$expire= 60 * 60 * 24 * 10000 + time(); 
setcookie('logedon', true, $expire); 
show_form();
}

因此設置了cookie,show_form函數被調用但仍顯示表單而不是echo'你現在登錄'。 當我再次切換頁面或點擊提交按鈕時,會顯示回顯。 為什么它第一次不這樣做?

請幫忙!

setcookie文檔說:

在下一次加載可以看到cookie的頁面之前,Cookie不會顯示。 要測試cookie是否已成功設置,請在cookie過期前檢查下一個加載頁面上的cookie。 過期時間通過expire參數設置。 調試cookie存在的一種好方法是簡單地調用print_r($ _ COOKIE);.

設置完cookie后你應該重新加載你的頁面,你可以使用header('location:http://someurl');die();

只需使用標題功能完成登錄后手動刷新頁面。 設置cookie后,只能在下一頁重新加載時訪問它

請參閱setcookie文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM