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制作静态网站的模板框架
Oct 09 PHP
PHP file_get_contents设置超时处理方法
Sep 30 PHP
PHP使用glob函数遍历目录或文件夹的方法
Dec 16 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
讲解WordPress开发中一些常用的debug技巧
Dec 18 PHP
yii2中使用Active Record模式的方法
Jan 09 PHP
PHP 输出缓冲控制(Output Control)详解
Aug 25 PHP
laravel5.2实现区分前后台用户登录的方法
Jan 11 PHP
PHP排序算法之快速排序(Quick Sort)及其优化算法详解
Apr 21 PHP
PHP基于递归算法解决兔子生兔子问题
May 11 PHP
windows环境下使用Composer安装ThinkPHP5
May 18 PHP
php layui实现前端多图上传实例
Jul 30 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缓存类代码(附详细说明)
2011/06/09 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
PHP封装的字符串加密解密函数
2015/12/18 PHP
使用正则去除php代码中的注释方法
2016/11/03 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
jQuery 表格工具集
2010/04/25 Javascript
jQuery实现下拉框功能实例代码
2016/05/06 Javascript
vue多级多选菜单组件开发
2020/09/08 Javascript
Javascript之面向对象--方法
2016/12/02 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
深入理解vue中的$set
2017/06/01 Javascript
详解vue2.0 不同屏幕适配及px与rem转换问题
2018/02/23 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
jQuery UI实现动画效果代码分享
2018/08/19 jQuery
微信小程序使用npm支持踩坑
2018/11/07 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
JS sort方法基于数组对象属性值排序
2020/07/10 Javascript
Python break语句详解
2014/03/11 Python
Python列表切片用法示例
2017/04/19 Python
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
Python打开文件、文件读写操作、with方式、文件常用函数实例分析
2020/01/07 Python
Python安装OpenCV的示例代码
2020/03/05 Python
Python爬虫爬取百度搜索内容代码实例
2020/06/05 Python
想学画画?python满足你!
2020/12/24 Python
HTML5 CSS3打造相册效果附源码下载
2014/06/16 HTML / CSS
巴西婴儿用品商店:Bebe Store
2017/11/23 全球购物
美国最大的无人机经销商:DroneNerds
2018/03/20 全球购物
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
美国优质马术服装购买网站:Breeches.com
2019/12/16 全球购物
SQL数据库笔试题
2016/03/08 面试题
会计自荐书
2013/12/02 职场文书
党校培训自我鉴定
2014/02/01 职场文书
新教师培训方案
2014/06/08 职场文书
运动会铅球比赛加油稿
2014/09/26 职场文书
公文写作:新员工转正申请书范本3篇!
2019/08/07 职场文书
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL