2

好的,我有简单的文本字段来输入用户/通过记住用户复选框,但不知何故,我不确定我做错了什么,当我选中该框时,不会重新创建 cookie,并且在我重新访问该站点时不会创建 cookie用户名不会显示....这就是我所拥有的

function loginForm($userValue,$checkBox)
{

echo "<form action='index.php' method='get'>";
echo "<p>Username: <input type='text' name='user' value='$userValue' /></p>";
echo "<p>Password: <input type='password' name='pass' /></p>";
echo "<p>Remember my username next time I visit this site <input type='checkbox' name='remember'" . $checkBox . "/></p>";
echo "<input type='submit' value='Log In' />";
echo "</form>";

}

if((!(isset($_GET["user"]))) && (!(isset($_COOKIE["username"]))))
{
    loginForm('','');
}
if(isset($_GET["remember"]))
{
    setcookie("username",$_GET["user"], time() + 60);
    loginForm($_COOKIE["username"],"checked");
}
4

2 回答 2

2

看起来你有一些逻辑错误。一方面,您只需检查是否可以在设置 $_GET["remember"] 时使用 cookie 填写表单,这可能意味着表单刚刚提交。这是一个修改后的版本,可能是一个好的开始:

function loginForm($userValue,$checkBox)
{

echo "<form action='test.php' method='get'>";
echo "<p>Username: <input type='text' name='user' value='$userValue' /></p>";
echo "<p>Password: <input type='password' name='pass' /></p>";
echo "<p>Remember my username next time I visit this site <input type='checkbox' name='remember'" . $checkBox . "/></p>";
echo "<input type='submit' value='Log In' />";
echo "</form>";

}

if (!isset($_GET["user"]) && !isset($_COOKIE["username"]))
{
    loginForm('','');
}
else if (isset ($_COOKIE["username"]))
{
    loginform ($_COOKIE["username"], '');
}
if (isset($_GET["remember"]))
{
    setcookie("username",$_GET["user"], time() + 60);
}

但是,最大的问题绝对是您仅在刚刚提交表单时才允许 cookie 工作。我刚刚发布的代码对我有用,并且记住了我的用户名。

于 2013-04-07T05:35:50.787 回答
1

您将 cookie 设置为从当前时间起 60 秒的过期日期。因此,当您重新访问该站点时,它可能刚刚过期。

于 2013-04-07T05:18:40.067 回答