[英]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'你現在登錄'。 當我再次切換頁面或點擊提交按鈕時,會顯示回顯。 為什么它第一次不這樣做?
請幫忙!
在下一次加載可以看到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.