使用客户端的cookie可以实现上述需求,下面以留言板为实例来讲解:
先看一下一般的Form(不具有记住功能的表单):
我们需要在名称、邮箱、网站链接处填上用户的信息,这些信息应该从用户上一次提交时得到。
只需要在post.php中加入下面的语句:
$sql = "insert into comment (nid,username,email,info,ip,site,submit_time) values ('$nid','$username','$email','$info','$ip','$site',NOW())";
$result = mysql_query($sql);
setcookie("CookieNAME",mysql_insert_id(),time()+94608000,"/"); /* 三年后 cookie 才会失效 */
把刚添加进数据库中的记录id保存在CookieNAME中,保存时间为三年。
上面是写入cookie,取出直接用$CookieNAME。可是取出id没什么用,我们需要的是用户的信息,那么就执行一下数据库查询操作就行了:
if(!empty($CookieNAME)){
$sql = "select username,email,site from comment where id=$CookieNAME";
$rss = mysql_query($sql);
$rs= mysql_fetch_array($rss);
}
然后把这些得到的信息填到上面的form表单中就完成了“记住”。
可是用户不一定都希望被“记住”,那么就要增加一个复选框供用户选择。表单中在按钮的右边添加:
post.php处理时只需要简单的判断复选框有没有被选中即可:
if(!empty($_POST["chkRemember"])){//如果复选框选中,设置cookie
setcookie("CookieNAME",mysql_insert_id(),time()+94608000,"/"); /* 三年后 cookie 才会失效 */
}
整个过程就是这样的,登录框和这个实现起来差不多。
如有有两个用户id分别为id1,id2
回复删除如果id1用户在登录的时候,改变了cookie中的“用户id”为“id2”,那么登录的时候会不会使用的是id2的用户信息登录的?
@110
回复删除看一下这条语句,setcookie("CookieNAME",mysql_insert_id(),time()+94608000,"/");
因为Cookie只是存储在本地计算机上的。用户1把他的信息存在自己的电脑上,名称为CookieNAME。用户2也把自己的信息存在CookieNAME中。虽然上面的名称是一样的,都是CookieNAME,但是这是两台电脑上的CookieNAME. 故而用户1并不能得到用户2的信息。
但是,如果两个用户在同一个电脑上登陆,那么以最后一位用户的信息为准,因为前面一个用户的信息已经被替换了,CookieNAME只保留最近设置的一份用户的信息。