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 相关文章推荐
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
Jan 06 PHP
PHP 第二节 数据类型之数组
Apr 28 PHP
php中使用preg_match_all匹配文章中的图片
Feb 06 PHP
PHP eval函数使用介绍
Dec 08 PHP
php多维数组去掉重复值示例分享
Mar 02 PHP
php实现斐波那契数列的简单写法
Jul 19 PHP
php微信公众开发之获取周边酒店信息的方法
Dec 22 PHP
PHP结合jQuery实现找回密码
Jul 22 PHP
PHP基于yii框架实现生成ICO图标
Nov 13 PHP
PHP云打印类完整示例
Oct 15 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 PHP
laravel csrf排除路由,禁止,关闭指定路由的例子
Oct 21 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的开合式多级菜单程序
2006/10/09 PHP
PHP的类 功能齐全的发送邮件类
2006/10/09 PHP
一个域名查询的程序
2006/10/09 PHP
PHP 获取文件路径(灵活应用__FILE__)
2013/02/15 PHP
PHP实现的连贯操作、链式操作实例
2014/07/08 PHP
php根据日期或时间戳获取星座信息和生肖等信息
2015/10/20 PHP
详解PHP用substr函数截取字符串中的某部分
2016/12/03 PHP
PHP切割汉字的常用方法实例总结
2019/04/27 PHP
JQuery跳出each循环的方法
2015/04/16 Javascript
jQuery插件Zclip实现完美兼容个浏览器点击复制内容到剪贴板
2015/04/30 Javascript
JS中Location使用详解
2015/05/12 Javascript
基于jQuery Circlr插件实现产品图片360度旋转
2015/09/20 Javascript
基于jquery插件编写countdown计时器
2016/06/12 Javascript
jQuery实现最简单的切换图效果【可兼容IE6、火狐、谷歌、opera等】
2016/09/04 Javascript
详解小程序原生使用ES7 async/await语法
2018/08/06 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
2018/11/02 Javascript
Vue 处理表单input单行文本框的实例代码
2019/05/09 Javascript
layer ui 导入文件之前传入数据的实例
2019/09/23 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
解决vue 给window添加和移除resize事件遇到的坑
2020/07/21 Javascript
[54:29]2018DOTA2亚洲邀请赛 4.7 淘汰赛 VP vs LGD 第二场
2018/04/09 DOTA
[02:04]完美世界城市挑战赛秋季赛报名开始 谁是solo路人王?
2019/10/10 DOTA
python利用beautifulSoup实现爬虫
2014/09/29 Python
Python中用psycopg2模块操作PostgreSQL方法
2017/11/28 Python
python使用turtle绘制分形树
2018/06/22 Python
使用selenium模拟登录解决滑块验证问题的实现
2019/05/10 Python
Python银行系统实战源码
2019/10/25 Python
实习护理工作自我评价
2013/09/25 职场文书
软件毕业生个人鉴定
2014/03/03 职场文书
股份合作协议书
2014/04/12 职场文书
大学新闻系应届生求职信
2014/06/02 职场文书
2014年创先争优工作总结
2014/12/11 职场文书
离婚协议书的范本
2015/01/27 职场文书
教你怎么用python爬取爱奇艺热门电影
2021/05/20 Python