我正在建立一个带有登录名的网站。我的会话工作正常,但如果单击记住我,我需要能够保持它们登录。目前,我有登录脚本保存一个cookie,其中包含他们键入的用户名和密码到某些cookie中。我下面的脚本$username和$password在脚本中设置得更高。$_SESSION 变量设置良好。而且我知道脚本正在进入 if 语句,因为在我在那里放置一个警报框之前。
登录.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>";
我错过了什么???
尝试使用指定路径的 setcookie,这用来抓住我,因为它默认采用当前路径。使用/将使 cookie 适用于整个域
setcookie("Username", $username, time()+3600*24*30, '/');
您正在使用 PHP 编写脚本代码。PHP 只能知道随请求发送的数据。
如果您先设置一个cookie,然后从$_COOKIE
获取数据,则数据尚不存在。首先,浏览器必须接受cookie,然后在下一个请求时将其发送回去。
如果您改用Javascript并从浏览器中获取文档cookie,它将起作用。
现在是免责声明
切勿将登录凭据(用户名和密码(作为纯文本存储在永久 cookie 中!
如果做得好,您可以从加密安全的随机数生成器创建一个长随机字符串(这意味着您不使用rand()
或mt_rand()
(,将其存储在cookie中以及数据库中。在检查凭据时,此随机字符串现在可替代用户名和密码。
似乎$keep
不知从何而来。如果对变量使用了复选框$keep
则可以执行以下操作。
<?
$keep = isset($_POST['keep']);
if ($keep) {
.... // cookie set up
}
?>
最好使用 Jquery/Javascript 在浏览器中设置 cookie。我发现在jquery中比PHP更容易。
使用 jQuery 创建、读取和擦除 cookie
查看 cookie 的工作原理
索引.php
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Himel Sarkar</title>
<link rel="stylesheet" href="">
</head>
<body>
<?php
setcookie("username","Himel Sarkar",time()+100);
echo "This cookie is valied for 100 sec ";
?>
<a href="welcome.php">Next Page</a>
</body>
</html>
欢迎.php
<?php
echo $_COOKIE['username']."<br>";
?>
<h4> If you go previous page then new cookie will genarate <a href="index.php">Previous Page</a></h4>