2016-03-03 38 views
1

檢索cookie我有下面的代碼,在成功登錄功能:不能在PHP

setcookie('username', $username, time()+60*60*24*365); 
setcookie('password', $clean_pw, time()+60*60*24*365); 

$username$clean_pw是純文本的登錄信息。

在測試頁中,我試試這個:

foreach ($_COOKIE as $key=>$val) 
{ 
    echo $key.' is '.$val."<br>\n"; 
} 

並獲得儘可能結果:

PHPSESSID is 823fc1084766daba506cffc3654e1e23 
_gat is 1 
_ga is GA1.2.1524905679.1454061204 

爲什麼我無法找到我的登錄cookie嗎?

編輯:此外,我的瀏覽器cookies列表中的曲奇。看起來他們是不是在$_COOKIE

+1

餅乾可在下一頁加載,你知道嗎? –

+0

不應該重新加載相同的頁面導致相同的結果? – nevetz1911

+1

切勿在Cookie中設置用戶名和密碼。 Cookies可能被盜。它應該是 – jgroenen

回答

1

一個$_COOKIE需求是使用setcookie()創建:在http://www.w3schools.com/php/php_cookies.asp$_COOKIE

setcookie(name, value, expire, path, domain, secure, httponly); 

更多信息。


您可以改用PHP Session來使其更安全。

首先,設置$_SESSION

session_start(); 
$_SESSION['logged_in'] = true; 
header("Location: login.php"); 

要了解用戶登錄,您可以檢查會議,如果沒有設置,然後將用戶重定向回到登錄頁面。

<?php 

session_start(); 
if(!$_SESSION['logged_in']){ 
session_destroy(); 
header("Location: login.php"); 
} 

?> 

要註銷,銷燬會話。

<?php 

session_start(); 
$_SESSION['logged_in'] = 0; 
session_destroy(); 
header("Location: login.php"); 

?> 

只是提示,你應該加密用戶的用戶名和密碼。

另外,切勿將cookie存儲在cookie或會話中,因爲首先沒有用處。這是一個更好,更安全的方式來登錄true當用戶登錄。

希望這可以幫助!

-1

您可以使用會話,而不是餅乾,它可以幫助ü

$_SESSION["name"] = "andy"; 
$_SESSION["pass"] = "00000"; 
+0

不要將憑證放入會話中。相反,將相應的用戶ID放在會話中。 – jgroenen

0

嘗試設置與「路徑」的cookie。

setcookie(name,value,expire,path,domain,secure,httponly);

setcookie('username', $username, time()+60*60*24*365, '/'); 
setcookie('password', $clean_pw, time()+60*60*24*365, '/'); 

這將指定在該域的所有文件路徑。

1

首先,永遠不會將用戶名或密碼設置爲cookies。由於cookie可以被任何東西讀取,這是一種非常糟糕的做法。 Cookie應該用於「記住我」檢查之類的內容,並使用會話(仍不包含用戶名或密碼)來驗證用戶身份。

爲了回答您的問題,您不會看到剛剛設置的cookie,直到進入下一頁(或刷新)。

此外,你可能還需要考慮使用DATETIME()類使用日期設置,設置的cookie藏漢路徑和域名,像這樣:

setcookie(name,value,expire,path,domain,secure,httponly);