В настоящее время у меня есть набор файлов 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/'); } ?>
Исходные источники на пастебине
Убедитесь, что вы удалили файл cookie с тем же именем и контентом, с которым вы его установили. Куки-файлы для example.com и http://www.example.com будут рассматриваться как два разных файла cookie. Аналогично, файлы cookie, установленные в example.com и example.com/Support, будут иметь разные пути. Хорошей практикой является использование .example.com в качестве домена и '/' в качестве пути для файлов cookie с именем пользователя, чтобы они могли совместно использоваться и в ваших поддоменах.
Чтобы отладить это, вы можете использовать плагин FireCookie для Firefox, который отобразит всю эту информацию.
Устанавливая срок его действия в течение некоторого времени в прошлом, следует очистить его:
setcookie("username",$username,time()-10);
Если вы используете сеансы PHP для управления пользователями, вы, вероятно, также захотите использовать session_destroy()
Вы действительно не должны хранить ваш пароль пользователей в cookie, особенно если вы не используете HTTPS! Пароль будет отправлен в открытом виде по сети для каждого запроса! Кроме того, никогда не отправляйте пользователю пароль, это хорошая идея.