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
PHP 开发环境配置(测试开发环境)
Apr 28 PHP
php中将地址生成迅雷快车旋风链接的代码[测试通过]
Apr 20 PHP
php中并发读写文件冲突的解决方案
Oct 25 PHP
PHP检测移动设备类mobile detection使用实例
Apr 14 PHP
PHP中的Streams详细介绍
Nov 12 PHP
php+mysql大量用户登录解决方案分析
Dec 29 PHP
PHP递归遍历指定文件夹内的文件实现方法
Nov 15 PHP
PHP读取文本文件并逐行输出该行使用最多的字符与对应次数的方法
Nov 25 PHP
详解Yii2.0 rules验证规则集合
Mar 21 PHP
laravel5使用freetds连接sql server的方法
Dec 07 PHP
PHP Cli 模式设置进程名称的方法
Jun 12 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通过隐藏表单控件获取到前两个页面的url
2014/09/09 PHP
php中动态修改ini配置
2014/10/14 PHP
微信公众平台开发教程④ ThinkPHP框架下微信支付功能图文详解
2019/04/10 PHP
PHP设计模式(九)外观模式Facade实例详解【结构型】
2020/05/02 PHP
prettify 代码高亮着色器google出品
2010/12/28 Javascript
javascript之Partial Application学习
2013/01/10 Javascript
js中的异常处理try...catch使用介绍
2013/09/21 Javascript
导入extjs、jquery 文件时$使用冲突问题解决方法
2014/01/14 Javascript
jsp网页搜索结果中实现选中一行使其高亮
2014/02/17 Javascript
js实现文本框选中的方法
2015/05/26 Javascript
jquery判断至少有一个checkbox被选中的方法
2015/06/05 Javascript
JS实现可展开折叠层的鼠标拖曳效果
2015/10/09 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
jQuery实例—选项卡的简单实现(js源码和jQuery)
2016/06/14 Javascript
利用Angularjs和bootstrap实现购物车功能
2016/08/31 Javascript
jQuery实现的无缝广告图片左右滚动功能详解
2016/12/24 Javascript
JavaScript组件开发之输入框加候选框
2017/03/10 Javascript
JS中注入eval, Function等系统函数截获动态代码
2019/04/03 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
jQuery 选择器用法实例分析【prev + next】
2020/05/22 jQuery
[02:40]DOTA2英雄基础教程 巨牙海民
2013/12/23 DOTA
Python Tkinter基础控件用法
2014/09/03 Python
Python字符编码判断方法分析
2016/07/01 Python
python并发和异步编程实例
2018/11/15 Python
Python异常处理例题整理
2019/07/07 Python
python构造函数init实例方法解析
2020/01/19 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
tensorflow-gpu安装的常见问题及解决方案
2020/01/20 Python
python之MSE、MAE、RMSE的使用
2020/02/24 Python
windows python3安装Jupyter Notebooks教程
2020/04/13 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
员工工作自我评价
2014/09/26 职场文书
导游词之西安大清真寺
2019/12/17 职场文书
Win11怎么进入安全模式?Windows 11进入安全模式的方法
2021/11/21 数码科技
Python字符串常规操作小结
2022/04/03 Python