3

我正在建立一个带有登录名的网站。我的会话工作正常,但如果单击记住我,我需要能够让它们保持登录状态。目前,我有登录脚本保存一个 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>";

我错过了什么???

4

5 回答 5

14

尝试使用指定路径的 setcookie,这曾经让我抓狂,因为它默认采用当前路径。使用 / 将使 cookie 适用于整个域

setcookie("Username", $username, time()+3600*24*30, '/');
于 2013-10-09T00:33:20.683 回答
2

您正在使用 PHP 编写脚本代码。PHP 只能知道随请求发送的数据。

如果您先设置 cookie,然后从 获取数据$_COOKIE,则数据尚未存在。首先,浏览器必须接受 cookie,然后在下一个请求时将其发回。

如果您改用 Javascript 并从浏览器获取文档 cookie,它会起作用。

现在免责声明

永远不要将登录凭据(用户名和密码)作为纯文本存储在永久 cookie 中!

如果操作正确,您可以从加密安全的随机数生成器创建一个长随机字符串(这意味着您不使用rand()or mt_rand()),将其存储在 cookie 和数据库中。在检查凭据时,这个随机字符串现在可以替代用户名和密码。

于 2013-10-09T00:24:43.777 回答
1

好像不知从何$keep而来。如果您对$keep变量使用了复选框,则可以执行以下操作。

<?
$keep = isset($_POST['keep']);
if ($keep) {
    .... // cookie set up
}
?>
于 2013-10-09T00:21:15.633 回答
0

最好使用 Jquery/Javascript 在浏览器中设置 cookie。我发现在 jquery 中比在 PHP 中更容易。

使用 jQuery 创建、读取和擦除 cookie

于 2013-10-09T00:49:02.113 回答
-1

查看 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>
于 2019-11-15T18:48:49.290 回答