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操作MongoDB的技术总结
Jun 02 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
Jul 02 PHP
php初始化对象和析构函数的简单实例
Mar 11 PHP
PHP模板引擎smarty详细介绍
May 26 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
Aug 16 PHP
php微信公众平台开发之获取用户基本信息
Aug 17 PHP
Zend Framework+smarty用法实例详解
Mar 19 PHP
PHP文件上传操作实例详解
Sep 27 PHP
PHP 微信扫码支付源代码(推荐)
Nov 03 PHP
php基于自定义函数记录log日志方法
Jul 21 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
Thinkphp5.0 框架Model模型简单用法分析
Oct 11 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
服务器端解压缩zip的脚本
2006/12/22 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
event.X和event.clientX的区别分析
2011/10/06 Javascript
js动态创建表格,删除行列的小例子
2013/07/20 Javascript
js中的布尔运算符使用介绍
2013/11/20 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
js变形金刚文字特效代码分享
2015/08/20 Javascript
jQuery实现垂直半透明手风琴特效代码分享
2015/08/21 Javascript
仅30行代码实现Javascript中的MVC
2016/02/15 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
three.js绘制地球、飞机与轨迹的效果示例
2017/02/28 Javascript
利用Angular+Angular-Ui实现分页(代码加简单)
2017/03/10 Javascript
jQuery插件FusionCharts绘制的3D双柱状图效果示例【附demo源码】
2017/04/20 jQuery
通过函数作用域和块级作用域看javascript的作用域链
2018/08/05 Javascript
详解微信小程序与内嵌网页交互实现支付功能
2018/10/22 Javascript
微信小程序swiper实现滑动放大缩小效果
2018/11/15 Javascript
D3.js(v3)+react 实现带坐标与比例尺的散点图 (V3版本)
2019/05/09 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
2019/09/10 Javascript
Python爬虫天气预报实例详解(小白入门)
2018/01/24 Python
python 读取文件并替换字段的实例
2018/07/12 Python
python读取图片并修改格式与大小的方法
2018/07/24 Python
对Python3 * 和 ** 运算符详解
2019/02/16 Python
详解pandas中MultiIndex和对象实际索引不一致问题
2019/07/23 Python
django数据模型on_delete, db_constraint的使用详解
2019/12/24 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
餐饮加盟计划书
2014/01/10 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
学习优秀党务工作者先进事迹材料思想报告
2014/09/17 职场文书
学校国庆节活动总结
2015/03/23 职场文书
老公出轨后的保证书
2015/05/08 职场文书
刑事附带民事起诉状
2015/05/19 职场文书
大学生志愿者心得体会
2016/01/15 职场文书
如何利用Python实现一个论文降重工具
2021/07/09 Python