PHP 使用二进制保存用户状态的实例


Posted in PHP onJanuary 29, 2018

前言

用户状态保存是一个很常见的需求,一般用来保存用户状态的方式是在数据库表中创建多个字段来存储相应的用户状态,比如要保存用户是否绑定了手机号和QQ,则需要2个字段(mobile,qq)来保存。

如果使用二进制来保存用户的状态的话则只需要1个字段(status)就能保存多个用户状态。

当然使用二进制来保存也有一些坏处,比如不能存储详细的信息,只能用来判断状态,而且在数据库中可读性也比较差。下面是一个比较简单的Demo。

代码

<?php
/**
 * 使用二进制来保存用户状态
 */
//首先定义4个用户状态
define('MOBILE', 1); //手机号绑定
define('EMAIL', 2);  //邮箱绑定
define('WECHAT', 4); //微信绑定
define('QQ', 8);   //QQ绑定
//模拟用户类
class User {
  public $user_name = "";
  public $status = 0; //用来保存用户状态
  function __construct($user_name, $status) {
    $this->user_name = $user_name;
    $this->status = $status;
  }
}
//new一个测试用户
$test_user = new User("test_user", 0);
//先判断用户是否绑定了手机号
if (($test_user->status & MOBILE) == MOBILE)
  echo "first:该用户已经绑定手机号,用户状态是:" . $test_user->status . "</br>";
else
  echo "first:该用户没有绑定手机号,用户状态是:" . $test_user->status . "</br>";
//接着该用户去绑定了手机号 微信 和 QQ
$test_user->status = MOBILE | WECHAT | QQ;
//再判断一下用户是否绑定了手机号
if (($test_user->status & MOBILE) == MOBILE)
  echo "second:该用户已经绑定手机号,用户状态是:" . $test_user->status . "</br>";
else
  echo "second:该用户没有绑定手机号,用户状态是:" . $test_user->status . "</br>";
//再判断一下用户有没有绑定邮箱
if (($test_user->status & EMAIL) == EMAIL)
  echo "third:该用户已经绑定邮箱,用户状态是:" . $test_user->status . "</br>";
else
  echo "third:该用户没有绑定邮箱,用户状态是:" . $test_user->status . "</br>";
//然后这个用户解除了手机号绑定
$test_user->status = ($test_user->status & (~MOBILE));
//再次判断用户是否绑定了手机号
if (($test_user->status & MOBILE) == MOBILE)
  echo "fourth:该用户已经绑定手机号,用户状态是:" . $test_user->status . "</br>";
else
  echo "fourth:该用户没有绑定手机号,用户状态是:" . $test_user->status . "</br>";

以上这篇PHP 使用二进制保存用户状态的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
玩转虚拟域名◎+ .
Oct 09 PHP
set_include_path在win和linux下的区别
Jan 10 PHP
PHP 日期时间函数的高级应用技巧
Oct 10 PHP
php木马webshell扫描器代码
Jan 25 PHP
三个类概括PHP的五种设计模式
Sep 05 PHP
最常用的8款PHP调试工具
Jul 06 PHP
Eclipse的PHP插件PHPEclipse安装和使用
Jul 20 PHP
php过滤表单提交的html等危险代码
Nov 03 PHP
PHP生成plist数据的方法
Jun 16 PHP
php写入、删除与复制文件的方法
Jun 20 PHP
php获取指定(访客)IP所有信息(地址、邮政编码、国家、经纬度等)的方法
Jul 06 PHP
在Win2003(64位)中配置IIS6+PHP5.2.17+MySQL5.5的运行环境
Apr 04 PHP
thinkphp3.2.0 setInc方法 源码全面解析
Jan 29 #PHP
Ubuntu上安装yaf扩展的方法
Jan 29 #PHP
PHP实现的防止跨站和xss攻击代码【来自阿里云】
Jan 29 #PHP
php实现的AES加密类定义与用法示例
Jan 29 #PHP
php 判断IP为有效IP地址的方法
Jan 28 #PHP
Laravel中unique和exists验证规则的优化详解
Jan 28 #PHP
win10 apache配置虚拟主机后localhost无法使用的解决方法
Jan 27 #PHP
You might like
php 图片上传类代码
2009/07/17 PHP
php生成随机密码的三种方法小结
2010/09/04 PHP
mysql总结之explain
2012/02/27 PHP
php unicode编码和字符串互转的方法
2020/08/12 PHP
php实现微信公众号创建自定义菜单功能的实例代码
2019/06/11 PHP
PHP设计模式之数据访问对象模式(DAO)原理与用法实例分析
2019/12/12 PHP
extJs 常用到的增,删,改,查操作代码
2009/12/28 Javascript
Knockout visible绑定使用方法
2013/11/15 Javascript
javascript模拟实现ajax加载框实例
2014/10/15 Javascript
NodeJS Web应用监听sock文件实例
2015/02/18 NodeJs
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
多种方式实现js图片预览
2016/12/12 Javascript
微信小程序开发的四十个技术窍门总结(推荐)
2017/01/23 Javascript
node.js(express)中使用Jcrop进行图片剪切上传功能
2017/04/21 Javascript
bootstrap Table插件使用demo
2017/08/07 Javascript
vue.js评论发布信息可插入QQ表情功能
2017/08/08 Javascript
使用Angular CLI快速创建Angular项目的一些基本概念和写法小结
2018/04/22 Javascript
vue-cli2.x项目优化之引入本地静态库文件的方法
2018/06/19 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
2019/05/10 Javascript
vue中监听返回键问题
2019/08/28 Javascript
vue项目中常见问题及解决方案(推荐)
2019/10/21 Javascript
JS函数进阶之继承用法实例分析
2020/01/15 Javascript
Python实现简单状态框架的方法
2015/03/19 Python
python魔法方法-属性访问控制详解
2016/07/25 Python
Python实现简易过滤删除数字的方法小结
2019/01/09 Python
用pycharm开发django项目示例代码
2019/06/13 Python
python并发爬虫实用工具tomorrow实用解析
2019/09/25 Python
TensorFlow内存管理bfc算法实例
2020/02/03 Python
python多维数组分位数的求取方式
2020/03/03 Python
Python3标准库之threading进程中管理并发操作方法
2020/03/30 Python
2015试用期转正工作总结
2014/12/12 职场文书
会计简历自我评价
2015/03/10 职场文书
法定代表人免职证明
2015/06/24 职场文书
解决Golang中goroutine执行速度的问题
2021/05/02 Golang