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 相关文章推荐
PHP 开发环境配置(Zend Studio)
Apr 28 PHP
一些php技巧与注意事项分析
Feb 03 PHP
PHP无限分类代码,支持数组格式化、直接输出菜单两种方式
May 18 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
Apr 23 PHP
PHP正则表达式 /i, /is, /s, /isU等介绍
Oct 23 PHP
php数组索引与键值操作技巧实例分析
Jun 24 PHP
双冒号 ::在PHP中的使用情况
Nov 05 PHP
PHP快速生成各种信息提示框的方法
Feb 03 PHP
PHP闭包函数详解
Feb 13 PHP
php模板引擎技术简单实现
Mar 15 PHP
php readfile()修改文件上传大小设置
Aug 11 PHP
PHP 时间处理类Carbon
May 20 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
discuz Passport 通行证 整合笔记
2008/06/30 PHP
PHP 事务处理数据实现代码
2010/05/13 PHP
php输出1000以内质数(素数)示例
2014/02/16 PHP
php ci框架中加载css和js文件失败的原因及解决方法
2014/07/29 PHP
php简单定时执行任务的实现方法
2015/02/23 PHP
Yii2实现让关联字段支持搜索功能的方法
2016/08/10 PHP
万能的php分页类
2017/07/06 PHP
offsetParent 算法分析
2010/04/05 Javascript
简单实用的反馈表单无刷新提交带验证
2013/11/15 Javascript
探讨:JavaScript ECAMScript5 新特性之get/set访问器
2016/05/05 Javascript
JS使用JSON作为参数实例分析
2016/06/23 Javascript
JS中如何实现复选框全选功能
2016/12/19 Javascript
JavaScript中值类型和引用类型的区别
2017/02/23 Javascript
JS操作input标签属性checkbox全选的实现代码
2017/03/02 Javascript
基于vue.js实现的分页
2018/03/13 Javascript
详解微信小程序的 request 封装示例
2018/08/21 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
js 图片懒加载的实现
2020/10/21 Javascript
python检测某个变量是否有定义的方法
2015/05/20 Python
Python多维/嵌套字典数据无限遍历的实现
2016/11/04 Python
用python实现简单EXCEL数据统计的实例
2017/01/24 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
2017/11/21 Python
python机器学习之神经网络(二)
2017/12/20 Python
深入理解Python 关于supper 的 用法和原理
2018/02/28 Python
基于python的ini配置文件操作工具类
2019/04/24 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
自我评价范文点评
2013/12/04 职场文书
生产部岗位职责范文
2014/02/07 职场文书
办公室主任竞聘演讲稿
2014/05/15 职场文书
2014办公室年度工作总结
2014/12/09 职场文书
社会实践活动报告
2015/02/05 职场文书
圣诞晚会主持词
2015/07/01 职场文书
2016幼儿园毕业感言
2015/12/08 职场文书
实用求职信模板范文
2019/05/13 职场文书
解决Jupyter-notebook不弹出默认浏览器的问题
2021/03/30 Python
matplotlib如何设置坐标轴刻度的个数及标签的方法总结
2021/06/11 Python