redis+php实现微博(一)注册与登录功能详解


Posted in PHP onSeptember 23, 2019

本文实例讲述了redis+php实现微博注册与登录功能。分享给大家供大家参考,具体如下:

(一)、微博功能概况

微博用户账号注册

微博用户登录

微博发布

添加微博好友(粉丝)

微博推送

微博冷数据写入mysql数据库

(二)、redis数据结构设计

这节分享微博用户注册与登录:
我们完全采用redis作为数据库来实现注册于登录
先来看一下redis数据结构的设计:

注册用户表:user

set global:userid

set user:userid:1:username zhangshan

set user:userid:1:password 1212121212

set user:username:zhangshan:userid 1

发布微博表:post

set post:postid:3:time timestamp

set post:postid:3:userid 5

set post:postid:3:content 测试发布哈哈哈哈

incr global:postid

set post:postid:$postid

(三)、核心代码说明

注册代码:

include("function.php");
//用户表单提交数据接收
$username = I('username');
$password = I('password');
$pwd = I('password2');
if(!$username || !$password || !$pwd){
  exit('用户名密码不能够为空~');
}
if($password!=$pwd){
  exit('两次密码输入不一致哦~');
}
//连接redis调用公用方法
$r = redis_connect();
//判断用户是否注册过
$info = $r->get("user:username:".$username.":userid");
if($info){
  exit('该用户已经注册过');
}
//将用户数据存入redis中
$userid = $r->incr('global:userid');
$r->set("user:userid:".$userid.":username",$username);
$r->set("user:userid:".$userid.":password",$password);
$r->set("user:username:".$username.":userid",$userid);
header("location:home.php");

登录代码:

include("function.php");
//如果用户已经登录调整到微博列表页面
if(isLogin()!=false){
  header("location:home.php");
  exit;
}
$username = I('username');
$password = I('password');
if(!$username || !$password){
  exit('数据输入不完整');
}
$r = redis_connect();
$userid = $r->get("user:username:".$username.":userid");
if(!$userid){
  exit('用户不存在');
}
$password = $r->get("user:userid:".$userid."password:".$password);
if(!password){
  exit('密码输入错误');
}
/**设置cookie登录成功**/
setcookie('username',$username);
setcookie('userid',$userid);
header("location:home.php");

function文件代码:

/*
 *@desc 连接redis操作方法
 */
function redis_connect(){
  $redis = new Redis();
  $redis->connect('127.0.0.1',6379);
  return $redis;
}
/*
 *@desc 接收数据方法
 **/
function I($post){
  if(empty($post)){
   return false;
  }
  return trim($_POST[$post]);
}
/**
 *@desc 判断是否登录
 ***/
function isLogin(){
  $username = $_COOKIE['username'];
  $userid = $_COOKIE['userid'];
  if(!$username || $userid){
    return false;
  }
  return array('userid'=>$userid,'username'=>$username);
}

说明:代码写的可能比较简单,这里只是阐述实现原理

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
phpwind中的数据库操作类
Jan 02 PHP
php csv操作类代码
Dec 14 PHP
PHP提取数据库内容中的图片地址并循环输出
Mar 21 PHP
PHP不用第三变量交换2个变量的值的解决方法
Jun 02 PHP
PHP stream_context_create()函数的使用示例
May 12 PHP
PHP共享内存用法实例分析
Feb 12 PHP
PHP实现bitmap位图排序与求交集的方法
Jul 28 PHP
PHP+jQuery实现滚屏无刷新动态加载数据功能详解
May 04 PHP
PHP 的Opcache加速的使用方法
Dec 29 PHP
laravel项目利用twemproxy部署redis集群的完整步骤
May 11 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 PHP
php设计模式之观察者模式定义与用法经典示例
Sep 19 PHP
php日志函数error_log用法实例分析
Sep 23 #PHP
php扩展开发入门demo示例
Sep 23 #PHP
PHP使用phpunit进行单元测试示例
Sep 23 #PHP
php快速导入大量数据的实例方法
Sep 23 #PHP
关于Yii中模型场景的一些简单介绍
Sep 22 #PHP
php定期拉取数据对比方法实例
Sep 22 #PHP
php设计模式之工厂模式用法经典实例分析
Sep 20 #PHP
You might like
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
ThinkPHP CURD方法之data方法详解
2014/06/18 PHP
php简单检测404页面的方法示例
2019/08/23 PHP
js版本A*寻路算法
2006/12/22 Javascript
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
JavaScript.The.Good.Parts阅读笔记(二)作用域&闭包&减缓全局空间污染
2010/11/16 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
xml转json的js代码
2012/08/28 Javascript
Javascript浮点数乘积运算出现多位小数的解决方法
2014/02/17 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
Javascript前端UI框架Kit使用指南之kitjs的对话框组件
2014/11/28 Javascript
jQuery实现contains方法不区分大小写的方法
2015/02/13 Javascript
JS运动基础框架实例分析
2015/03/03 Javascript
教你用javascript实现随机标签云效果_附代码
2016/03/16 Javascript
JavaScript学习笔记之ES6数组方法
2016/03/25 Javascript
非常棒的jQuery图片轮播效果
2016/04/17 Javascript
详解Vuex管理登录状态
2017/11/13 Javascript
微信小程序select下拉框实现效果
2019/05/15 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
NestJs使用Mongoose对MongoDB操作的方法
2021/02/22 Javascript
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
使用Python脚本来获取Cisco设备信息的示例
2015/05/04 Python
Python实现针对含中文字符串的截取功能示例
2017/09/22 Python
python 获取毫秒数,计算调用时长的方法
2019/02/20 Python
Python实现Selenium自动化Page模式
2019/07/14 Python
基于virtualenv创建python虚拟环境过程图解
2020/03/30 Python
关于前端上传文件全面基础扫盲贴(入门)
2019/08/01 HTML / CSS
澳大利亚家居用品零售商:Harris Scarfe
2020/10/10 全球购物
法国低价在线宠物商店:bitiba.fr
2020/07/03 全球购物
十佳青年个人事迹材料
2014/01/28 职场文书
装饰活动策划方案
2014/02/11 职场文书
员工合理化建议书
2014/05/19 职场文书
食堂采购员岗位职责
2015/04/03 职场文书
一个独生女的故事观后感
2015/06/04 职场文书
怎么用Python识别手势数字
2021/06/07 Python