无法在PHP中检索Cookie

时间:2016-03-03 11:37:48

标签: php cookies

我在成功的登录功能中有以下代码:

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列表中的Cookie 。它们似乎不在$_COOKIE

4 个答案:

答案 0 :(得分:1)

首先,永远不要将用户名或密码设置为cookie。这是一种非常糟糕的做法,因为cookie可以被任何东西读取。一个cookie应该用于像#34;记住我&#34;检查并使用会话(仍然不包含用户名或密码)来验证用户身份。

有了这个问题,为了回答你的问题,在你进入下一页(或刷新)之前,你不会看到刚被设置的cookie。

此外,您可能还需要考虑使用dateTime()类在日期设置中使用,并为cookie设置路径和域,如下所示:

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

答案 1 :(得分:1)

需要使用$_COOKIE创建setcookie()

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

有关http://www.w3schools.com/php/php_cookies.asp$_COOKIE的更多信息。

您可以使用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

希望这有帮助!

答案 2 :(得分:0)

尝试使用&#39;路径&#39;设置Cookie。

的setcookie(名称,值,过期,路径,域,安全,仅Http);

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

将指定该域上的所有文件路径。

答案 3 :(得分:-1)

你可以使用session而不是cookies,它可以帮助你

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