PHP Cookie 不起作用


PHP Cookies not working

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