我在成功的登录功能中有以下代码:
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
答案 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";