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 相关文章推荐
php4的彩蛋
Oct 09 PHP
珊瑚虫IP库浅析
Feb 15 PHP
PHP parse_url 一个好用的函数
Oct 03 PHP
php购物网站支付paypal使用方法
Nov 28 PHP
php截取字符串并保留完整xml标签的函数代码
Feb 06 PHP
php switch语句多个值匹配同一代码块的实现
Mar 03 PHP
PHP exif扩展方法开启详解
Jul 28 PHP
PHP批量修改文件名称的方法分析
Feb 27 PHP
php base64 编码与解码实例代码
Mar 21 PHP
PHP实现文件下载【实例分享】
Apr 28 PHP
php实现微信支付之企业付款
May 30 PHP
php微信开发之关键词回复功能
Jun 13 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
PHPLog php 程序调试追踪工具
2009/09/09 PHP
php加水印的代码(支持半透明透明打水印,支持png透明背景)
2013/01/17 PHP
浅谈php扩展imagick
2014/06/02 PHP
PHPExcel内存泄漏问题解决方法
2015/01/23 PHP
php 使用array函数实现分页
2015/02/13 PHP
PHP5多态性与动态绑定介绍
2015/04/03 PHP
php类的自动加载操作实例详解
2016/09/28 PHP
Laravel5.7 数据库操作迁移的实现方法
2019/04/12 PHP
Laravel框架实现抢红包功能示例
2019/10/31 PHP
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
input链接页面、打开新网页等等的具体实现
2013/12/30 Javascript
angularJS 中$scope方法使用指南
2015/02/09 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
十大 Node.js 的 Web 框架(快速提升工作效率)
2017/06/30 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
express框架中使用jwt实现验证的方法
2019/08/25 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
[13:38]2015国际邀请赛中国战队出征仪式
2015/05/29 DOTA
Python中文件操作简明介绍
2015/04/13 Python
python利用smtplib实现QQ邮箱发送邮件
2020/05/20 Python
将pandas.dataframe的数据写入到文件中的方法
2018/12/07 Python
Python类装饰器实现方法详解
2018/12/21 Python
python+opencv实现高斯平滑滤波
2020/07/21 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
Pandas聚合运算和分组运算的实现示例
2019/10/17 Python
浅谈Django2.0 加xadmin踩的坑
2019/11/15 Python
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
2017/08/15 HTML / CSS
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
精彩的英文自荐信
2014/01/30 职场文书
活动总结报告怎么写
2014/07/03 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
研讨会致辞
2015/07/31 职场文书
读后感怎么写?书写读后感的基本技巧!
2019/12/10 职场文书
python中sys模块的介绍与实例
2021/04/17 Python