匿名用户设计-阿里云开发者社区

开发者社区> 云计算> 正文

匿名用户设计

简介:
匿名用户设计:网站用户不需要登录可以实现登录用户的操作(除去扣费的功能外)
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。之前的匿名数据成垃圾数据了.可以根据标识符和时间写定期清理脚本

 

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云计算
使用钉钉扫一扫加入圈子
+ 订阅

时时分享云计算技术内容,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。

其他文章