這次帶給大家PHP使用二進位保存用戶狀態步驟詳解,PHP使用二進位保存用戶狀態的注意事項有哪些,以下就是實戰案例,一起來看一下。
前言
使用者狀態保存是一個很常見的需求,一般用來保存使用者狀態的方式是在資料庫表中建立多個個欄位來儲存對應的使用者狀態,例如要儲存使用者是否綁定了手機號碼和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中文網其他相關文章!