Удалить PHP Cookie? - PullRequest
       1

Удалить PHP Cookie?

7 голосов
/ 12 июня 2011

У меня в настоящее время есть файл 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/');
    }
?>

Оригинальные источники на пастбине

Ответы [ 3 ]

11 голосов
/ 12 июня 2011

Обязательно удалите cookie с тем же именем домена и путем, по которому вы его установили. Файлы cookie для example.com и www.example.com будут рассматриваться как два разных файла cookie. Аналогично, файлы cookie, установленные с example.com и example.com/Support, будут иметь разные пути. Хорошей практикой является использование .example.com в качестве домена и «/» в качестве пути для файлов cookie типа «имя пользователя», чтобы они также могли быть общими для ваших поддоменов.

Для отладки вы можете использовать плагин FireCookie в Firefox, который покажет всю эту информацию.

7 голосов
/ 12 июня 2011

Установка срока действия на некоторое время в прошлом должна очистить его:

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

Если вы используете сеансы PHP для управления пользователями, возможно, вы также захотите session_destroy()

1 голос
/ 10 мая 2013

Вы действительно не должны хранить пароль пользователя в cookie, особенно если вы не используете HTTPS!Пароль будет отправляться в виде открытого текста по сети для каждого запроса!Кроме того, никогда не отправляйте обратно его пароль, это хорошая идея.

...