我目前的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的原始资料
答案 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!密码将通过网络以明文形式发送给每个请求!此外,永远不要向用户发回他的密码,这是一个好主意。