我希望有人能夠幫助解決我正在處理的一些代碼中存在的這個小問題。請記住,這只是一個愛好網站,我知道有安全漏洞。 我寫了一個名爲set_remember_cookies的函數,當用戶選中「記住我」框時,從我的登錄腳本和註冊頁面調用該函數。PHP的setcookie函數不保存cookie?
每個安全網頁上的功能,然後執行以下操作:
- 檢查,看看是否還記得餅乾設置
- 查詢數據庫中查找與哈希的用戶名在cookie相關的USER_ID
- 從用戶表中獲取該User_ID的密碼
- 從remember_cookies表中獲取salt
- 散列密碼+ salt並將其與散列p cookie中的密碼
再說一遍,我知道在cookie中存儲哈希密碼是不安全的,但我現在不擔心這一點。
我的問題是,我已經包含在下面的set_remember_cookies函數實際上並沒有設置cookie。在受保護的頁面上,第一步(檢查cookie是否存在)失敗。我也在瀏覽器中檢查了這些cookie,並且它們沒有被存儲。
任何人都可以向我解釋爲什麼這個功能沒有設置cookie?我找不到任何錯誤,但希望有人能!謝謝!
<?php
function set_remember_cookies($uid, $identifier, $password) {
mysql_query("DELETE FROM remember_cookies WHERE User_ID = '$uid'"); //Delete old cookie records
$salt = sha1(uniqid(time() . $_SERVER['HTTP_REFERER']));
$username_hash = hash("sha256", $identifier . $salt); //Hash the username
if (mysql_query("INSERT INTO remember_cookies (User_ID, Username_Hash, Salt) VALUES ('$uid', '$username_hash', '$salt')")) {
setcookie("Username", $username_hash, 60*60*24*365);
setcookie("Password", hash("sha512", $password . $salt), 60*60*24*365);
}
}
?>
那麼......我有一種感覺,我忽略了一件簡單的事情!我之前使用過cookies,並且今天必須重新閱讀這些文檔大約3次。哦,有時候你需要別人來指出我想的,哈哈!謝謝! – HockeyRef45