删除PHP Cookie?

时间:2011-06-11 23:27:16

标签: php session-cookies

我目前的Cookie设置如下:

setcookie("username",$username,time()+3600*24*5);

我如何清除该Cookie的价值,以便用户的用户名不再填写?

我将其清除如下:

setcookie("username","",time()-60000);

用户的用户名仍然出现。

HTML表单:

<?php
    session_start();

    $username = NULL;
    $password = NULL;

    if(isset($_SESSION['username'])){
        $username = $_COOKIE['username'];
        $password = $_COOKIE['password'];
    }
?>
<html>
    <title>Login</title>
    <body bgcolor='#000000'>
        <font color="white">
    <H2><div align='center'>Login</div></H2>
    <form align='center' action='login.php' method='POST'>
            Username: <input type='text' name='username' value='<?$_COOKIE['username']?>'><br \>
            Password: <input type='password' name='password' value='<?$password?>'><br \>
            Remember Me <input type='checkbox' name='remember' value='rememberme'><br \>
            <input type='submit' value='Login'>
        </form>
        </font>
    </body>
</html>

处理表单的PHP脚本:

<?php
    session_start();

    $username = $_POST['username'];
    $password = $_POST['password'];

    //Hash password in a new variable
    $password2 = md5($password);

    require_once "/home/a7435766/public_html/scripts/dbconnect.php";

    $query = mysql_query("SELECT * FROM userstwo WHERE username = '$username' && password = '$password2'");

    if((mysql_num_rows($query)) != 0) {
        //Store username and password in a cookie
        if($_POST['remember'] == 'rememberme') {
            setcookie("username",$username,time()+3600*24*5,'','.ohjustthatguy.com');
            setcookie("password",$password,time()+3600*24*2,'','.ohjustthatguy.com');
        } else {
            setcookie("username","",time()-10,'','.ohjustthatguy.com');
            setcookie("password","",time()-10,'','.ohjustthatguy.com');
    }
        $_SESSION['username'] = $username;
        header('Location: http://www.ohjustthatguy.com/uploads/uploads.html');
        } else {
        header('Location: http://www.ohjustthatguy.com/uploads/');
    }
?>

关于pastebin的原始资料

3 个答案:

答案 0 :(得分:11)

请确保删除与您设置的域名和路径相同的Cookie。 example.com和www.example.com的Cookie将被视为两个不同的Cookie。同样,example.com和example.com/Support中设置的cookie将具有不同的路径。一个好的做法是使用.example.com作为域,使用'/'作为用户名类型cookie的路径,以便它们也可以在您的子域之间共享。

要调试此功能,您可以使用Firefox的FireCookie插件显示所有这些信息。

答案 1 :(得分:7)

将过期设置为过去的某个时间应清除它:

setcookie("username",$username,time()-10);

如果您使用PHP会话来管理用户,您可能还想session_destroy()

答案 2 :(得分:1)

你真的不应该将你的用户密码存储在cookie中,特别是如果你没有使用HTTPS!密码将通过网络以明文形式发送给每个请求!此外,永远不要向用户发回他的密码,这是一个好主意。