簡體   English   中英

無法在PHP中檢索Cookie

[英]Can't retrieve cookies in 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?

編輯:還可以,cookie 在瀏覽器中的cookies名單。 看來他們不在$_COOKIE

首先,永遠不要將用戶名或密碼設置為cookie。 這是非常糟糕的做法,因為cookie可以讀取任何內容。 Cookie應該用於“記住我”檢查之類的操作,並使用會話(仍然不包含用戶名或密碼)來驗證用戶身份。

這樣一來,回答您的問題,您將不會看到剛剛設置的cookie,直到您轉到下一頁(或刷新)為止。

另外,您可能還需要考慮使用dateTime()類在日期設置中使用,並為cookie設置路徑和域,如下所示:

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

需要使用setcookie()創建一個$_COOKIE

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

有關$_COOKIE更多信息, 請訪問http://www.w3schools.com/php/php_cookies.asp


您可以改用PHP會話來提高安全性。

首先,設置$_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或會話中,因為一開始就沒有用。 這是在用戶登錄時僅存儲true的一種更好,更安全的方法。

希望這可以幫助!

嘗試使用“路徑”設置cookie。

的setcookie(名稱,值,過期,路徑,域,安全,僅Http);

喜歡

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

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

您可以使用會話代替Cookie,這可能對您有所幫助

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

暫無
暫無

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

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