匿名用户设计

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

 

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

相关文章
|
7月前
|
安全
安全的用户
安全的用户
39 0
|
7月前
|
监控 JavaScript 应用服务中间件
匿名用户访问的接口或者无登录态场景下接口防刷的解决方案
匿名用户访问的接口或者无登录态场景下接口防刷的解决方案
112 0
|
安全 大数据
高匿名、普通匿名、透明代理有什么特点?高匿名代理的优势在哪?
高匿名、普通匿名、透明代理有什么特点?高匿名代理的优势在哪?
高匿名、普通匿名、透明代理有什么特点?高匿名代理的优势在哪?
|
中间件 数据安全/隐私保护
使用RoleBasedAuthorization实现基于用户角色的访问权限控制
本文将介绍如何通过 [Sang.AspNetCore.RoleBasedAuthorization](https://www.nuget.org/packages/Sang.AspNetCore.RoleBasedAuthorization) 库实现 RBAC 权限管理。
186 0
使用RoleBasedAuthorization实现基于用户角色的访问权限控制
|
小程序
如何让用户给我们做推荐?
AARRR里的最后一个R讲的就是传播。传播就是想办法让用户给我们做推荐。主要有两种方式:用户主动推荐、产品推动用户推荐。
199 0
如何让用户给我们做推荐?
|
存储 安全 算法
项目之用户登录和访问权限的控制(5)
项目之用户登录和访问权限的控制(5)
153 0
|
安全 Java 测试技术
项目之用户登录和访问权限的控制(6)
项目之用户登录和访问权限的控制(6)
267 0
|
安全 网络安全 数据安全/隐私保护