匿名用户设计

匿名用户设计:网站用户不需要登录可以实现登录用户的操作(除去扣费的功能外)
Java代码   收藏代码
  1. mail varchar(60) #用户名     
  2. istemp  tinyint(1) #是否是匿名  

假设登录用户是邮箱账号,匿名用户设计能保证唯一的非邮箱字符。匿名用户的操作数据产生和登录用户的业务流程一样,用户登录后只需要替换掉用户名(mail),标识符(istemp)清空匿名cookie/session即可,登录用户session和匿名session只能存在一个。匿名的数据用session或cookie存储(存mail即可)当产生一个匿名的session或cookie后就不产生新的匿名cookie/session值了。如登录是$_SESSION['user'] 匿名是$_SESSION['tmpuser'];

Java代码   收藏代码
  1. <?php  
  2. @session_start();  
  3. include_once 'inc/Users.class.php';  
  4. if (isset($_COOKIE['users']) && !empty($_COOKIE['users'])) {  
  5.     $user = new Users();  
  6.   
  7.     $userdata = authcode(urldecode($_COOKIE['users']), 'DECODE', APPKEY);  
  8.   
  9.     $arr = explode(':', $userdata, 2);  
  10.   
  11.     $data = unserialize($arr[1]);  
  12.     $mail = $data['mail'];  
  13.     if (strpos($mail, '@') > 0) {  
  14.         $userdetail = $user->getUserInfoByMail($mail);  
  15.         $tmpmail = $user->getSiteTmpUser($mail, $_GET ['sid']);  
  16.         if ($tmpmail) {  
  17.             $userdetail['tmpmail'] = $tmpmail;  
  18.             $mail = $tmpmail;  
  19.         }  
  20.         $user = $_SESSION['users'] = $userdetail;  
  21.     } else {  
  22.         $_SESSION['tmpusers'] = $data;  
  23.         $_SESSION['tmpusers']['isguest'] = 1;  
  24.         $user = $_SESSION['tmpusers'];  
  25.     }  
  26. }  
  27.   
  28. if (!isset($_SESSION['tmpusers']) && !isset($_SESSION['users'])) {  
  29.     $mail = getsalt() . random(30);  
  30.     $key = authcode(serialize(array('mail' => $mail)), 'ENCODE', APPKEY, time() + 30);  
  31.     setcookie('users', $key, time() + 3600'/');  
  32. }  

2 如果用户故意不登录清掉cookie后,再访问回产生新的cookie。之前的匿名数据成垃圾数据了.可以根据标识符和时间写定期清理脚本

 

常见应用:匿名购物车功能

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值