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来处理多个提交任务
May 08 PHP
php生成xml简单实例代码
Dec 16 PHP
整理的9个实用的PHP库简介和下载
Nov 09 PHP
PHP中extract()函数的妙用分析
Jul 11 PHP
邮箱正则表达式实现代码(针对php)
Jun 21 PHP
php header函数的常用http头设置
Jun 25 PHP
PHP串行化与反串行化实例分析
Dec 27 PHP
php+mysql+ajax实现单表多字段多关键词查询的方法
Apr 15 PHP
基于Laravel实现的用户动态模块开发
Sep 21 PHP
PHP htmlspecialchars()函数用法与实例讲解
Mar 08 PHP
PHP面向对象程序设计之对象克隆clone和魔术方法__clone()用法分析
Jun 12 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
Oct 17 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 mail 通过Windows的SMTP发送邮件失败的解决方案
2009/05/27 PHP
PHP代码审核的详细介绍
2013/06/13 PHP
Codeigniter实现智能裁剪图片的方法
2014/06/12 PHP
php使用substr()和strpos()联合查找字符串中某一特定字符的方法
2015/05/12 PHP
php获得客户端浏览器名称及版本的方法(基于ECShop函数)
2015/12/23 PHP
php实现的PDO异常处理操作分析
2018/12/27 PHP
PHP使用ajax的post方式下载excel文件简单示例
2019/08/06 PHP
Json2Template.js 基于jquery的插件 绑定JavaScript对象到Html模板中
2011/10/29 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
JavaScript设计模式之原型模式(Object.create与prototype)介绍
2014/12/28 Javascript
JavaScript将字符串转换成字符编码列表的方法
2015/03/19 Javascript
Jquery Ajax Error 调试错误的技巧
2015/11/20 Javascript
AngularJS使用angular-formly进行表单验证
2015/12/27 Javascript
Bootstrap 源代码分析(未完待续)
2016/08/17 Javascript
js Canvas绘制圆形时钟效果
2017/02/17 Javascript
详解nodejs express下使用redis管理session
2017/04/24 NodeJs
Jquery EasyUI $.Parser
2017/06/02 jQuery
VUE2实现事件驱动弹窗示例
2017/10/21 Javascript
js正则相关知识点专题
2018/05/10 Javascript
JS原型与继承操作示例
2019/05/09 Javascript
js事件机制----捕获与冒泡机制实例分析
2020/05/22 Javascript
Python交换变量
2008/09/06 Python
python conda操作方法
2019/09/11 Python
python创建n行m列数组示例
2019/12/02 Python
关于TensorFlow新旧版本函数接口变化详解
2020/02/10 Python
python绘制分布折线图的示例
2020/09/24 Python
HTML5自定义属性的问题分析
2019/08/16 HTML / CSS
英国领先的维生素和补充剂品牌:Higher Nature
2019/08/26 全球购物
二手书店创业计划书
2014/01/16 职场文书
保密承诺书范文
2014/03/27 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书
成绩单评语
2015/01/04 职场文书
百万英镑观后感
2015/06/09 职场文书
2015年城管执法工作总结
2015/07/23 职场文书
2016拓展训练心得体会范文
2016/01/12 职场文书
openEuler 搭建java开发环境的详细过程
2022/06/10 Servers