我正在 Build 一个登录网站 . 我的会话工作正常但我需要能够让他们登录,如果点击记住我 . 目前我的登录脚本使用他们键入的用户名和密码将cookie保存到一些cookie . 我在脚本中设置了以下脚本$ username和$ password . $ _SESSION变量设置得很好 . 而且我知道脚本会进入if语句,因为在我放置一个警告框之前 .
的login.php
while($row = mysql_fetch_array($getLoginResults))
{
$error = "Login Successful";
$_SESSION['Username'] = $_POST['username'];
$_SESSION['Password'] = $_POST['password'];
if($keep == 1)
{
setcookie("Username", $username, time()+3600*24*30);
setcookie("Password", $password, time()+3600*24*30);
}
}
当我检查登录时,我有一个javascript警报,所以我知道cookie已设置,但警报框出现空白 .
check_login.php
echo "<script>alert('".$_COOKIE['Username']."')</script>";
我错过了什么?
4 回答
尝试使用带有指定路径的setcookie,这用于捕捉我,因为它默认采用当前路径 . 使用/将使cookie适用于整个域
您正在使用PHP编写脚本代码 . PHP只能知道随请求发送的数据 .
如果您首先设置cookie然后从
$_COOKIE
获取数据,则数据尚未存在 . 首先,浏览器必须接受cookie,然后在下一个请求时将其发回 .如果你改用Javascript并从浏览器中获取文档cookie,它就可以了 .
现在是免责声明
永远不要将登录凭证(用户名和密码)作为纯文本存储在永久性cookie中!
如果操作正确,则从加密安全随机数生成器创建一个长随机字符串(这意味着您不使用
rand()
或mt_rand()
),将其存储在cookie中,也存储在数据库中 . 在检查凭据时,此随机字符串现在是用户名和密码的替代品 .似乎
$keep
来自无处 . 如果您使用$keep
变量的复选框,则可以执行以下操作 .最好使用Jquery / Javascript在浏览器中设置cookie . 我觉得jquery比PHP更容易 .
Create, read, and erase cookies with jQuery