2011-01-06 91 views
0

問候,問題設置和讀取Cookie,PHP

一直在試圖弄清楚爲什麼這不起作用。由於所用設備上的會話存在問題,因此使用Cookie製作低安全性登錄系統。設置的cookie可以獨立運行,但是在腳本中沒有正確設置,或者在auth腳本中沒有正確讀取。另外,在設置cookie之後,它不在瀏覽器中。想法?

登錄

<?php 
    //If passwords match, a cookie is created 
    if ($pw = $hashedpw) { 
     $memberID = "1221"; //Pulled from DB 
     setcookie('MDADMIN_SESS_ID',$memberID,'0','', '.somewhere.com'); 
     header('Location: http://somewhere.com/secure_page.php'); 
    } 
    ?> 

驗證

<?php 
//Verify that cookie is present 
$cookie = $_COOKIE['MDADMIN_SESS_ID']; 
if(!isset($cookie)) { 
     header("Location: http://somewhere.com/failed.php"); 
     exit(); 
} 
?> 

的過程如下:登錄表 - >登錄腳本 - >安全網頁(如果密碼匹配) - >驗證腳本檢查(通過包含) - >如果cookie不存在,則重定向至失敗登錄。運行時,即使登錄腳本正確指向安全頁面(成功登錄),它也始終默認爲不存在該cookie。

+1

考慮到您已經在瀏覽器上工作了,請嘗試給cookie更長的過期時間。 0應該在瀏覽器會話結束時關閉,但可能會在下一頁之前刪除它(作爲某種安全措施)。使用`time()+ 3600`或其他東西,看看是否有幫助。 – 2011-01-06 15:52:59

+0

不是一個壞主意,謝謝!嘗試處理舊版Blackberry瀏覽器,這是此頁面的唯一預期用戶代理。 – NightMICU 2011-01-06 16:13:06

回答

1

嘗試

<?php 
//If passwords match, a cookie is created 
    if ($pw = $hashedpw) { 
     $memberID = "1221"; //Pulled from DB 
     setcookie('MDADMIN_SESS_ID',$memberID,'0','/', '.somewhere.com'); 
     header('Location: http://somewhere.com/secure_page.php'); 
     exit(); 
    } 
?> 

你是缺少路徑/。

還要確保在頭部之後有一個exit();函數;因爲如果你稍後在某個地方取消設置cookie,它可能也會受到影響。

0

try添加/本線($ PATH變量),如果設置爲 '/',cookie將在整個域內提供

setcookie('MDADMIN_SESS_ID',$memberID,'0','/', '.somewhere.com');