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设计模式 Observer(观察者模式)
Jun 26 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
php随机显示图片的简单示例
Feb 15 PHP
php中in_array函数用法探究
Nov 25 PHP
PHP中使用xmlreader读取xml数据示例
Dec 29 PHP
PHP中explode函数和split函数的区别小结
Aug 24 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
PHP children()函数讲解
Feb 03 PHP
PHP simplexml_import_dom()函数讲解
Feb 03 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
May 27 PHP
PHP字符串与数组处理函数用法小结
Jan 07 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
thinkphp中session和cookie无效的解决方法
2014/12/19 PHP
php编写简单的文章发布程序
2015/06/18 PHP
在php中设置session用memcache来存储的方法总结
2016/01/14 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
PHP var关键字相关原理及使用实例解析
2020/07/11 PHP
利用jquery.qrcode在页面上生成二维码且支持中文
2014/02/12 Javascript
Jquery实现瀑布流布局(备有详细注释)
2015/07/31 Javascript
jQuery实现下拉加载功能实例代码
2016/04/01 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
js基于setTimeout与setInterval实现多线程
2016/06/17 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
BetterScroll 在移动端滚动场景的应用
2017/09/18 Javascript
JS中Object对象的原型概念基础
2018/01/29 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
2018/03/22 Javascript
详解React+Koa实现服务端渲染(SSR)
2018/05/23 Javascript
如何用Node写页面爬虫的工具集
2018/10/26 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
[00:43]魔廷新尊——痛苦女王至宝捆绑包
2020/06/12 DOTA
[01:00:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第三场 1月10日
2021/03/11 DOTA
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
python学习之编写查询ip程序
2016/02/27 Python
python简单实现刷新智联简历
2016/03/30 Python
Python编程之黑板上排列组合,你舍得解开吗
2017/10/30 Python
使用Python检测文章抄袭及去重算法原理解析
2019/06/14 Python
解决pycharm运行程序出现卡住scanning files to index索引的问题
2019/06/27 Python
python实现银行实战系统
2020/02/26 Python
python是怎么被发明的
2020/06/15 Python
python 递归相关知识总结
2021/03/03 Python
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
电气自动化大学生求职信
2013/10/16 职场文书
公司合作意向书范文
2014/07/30 职场文书
考生诚信考试承诺书
2015/04/29 职场文书
小学教育见习总结
2015/06/23 职场文书
千万级用户系统SQL调优实战分享
2022/03/03 MySQL
Python经常使用的一些内置函数
2022/04/11 Python