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 相关文章推荐
社区(php&&mysql)二
Oct 09 PHP
PHP伪造referer实例代码
Sep 20 PHP
PHP数据类型之整数类型、浮点数的介绍
Apr 28 PHP
在windows平台上构建自己的PHP实现方法(仅适用于php5.2)
Jul 05 PHP
Codeigniter出现错误提示Error with CACHE directory的解决方案
Jun 12 PHP
PHP 导出Excel示例分享
Aug 18 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
Dec 05 PHP
php+mysql结合Ajax实现点赞功能完整实例
Jan 30 PHP
PHP查询附近的人及其距离的实现方法
May 11 PHP
centos+php+coreseek+sphinx+mysql之一coreseek安装篇
Oct 25 PHP
详解ThinkPHP3.2.3验证码显示、刷新、校验
Dec 29 PHP
Laravel Validator 实现两个或多个字段联合索引唯一
May 08 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
收音机另类DIY - 纸巾盒做外壳
2021/03/02 无线电
PHP设计模式之装饰器模式实例详解
2018/02/07 PHP
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
javascript学习笔记(三)BOM和DOM详解
2014/09/30 Javascript
jQuery源码解读之addClass()方法分析
2015/02/20 Javascript
jquery实现翻动fadeIn显示的方法
2015/03/05 Javascript
移除AngularJS下URL中的#字符的方法
2015/06/19 Javascript
javascript的理解及经典案例分析
2016/05/20 Javascript
JS函数arguments数组获得实际传参数个数的实现方法
2016/05/28 Javascript
Javascript iframe交互并兼容各种浏览器的解决方法
2016/07/12 Javascript
ReactJs快速入门教程(精华版)
2016/11/28 Javascript
node.js请求HTTPS报错:UNABLE_TO_VERIFY_LEAF_SIGNATURE\的解决方法
2016/12/18 Javascript
基于JavaScript实现的顺序查找算法示例
2017/04/14 Javascript
JavaScript实现各种排序的代码详解
2017/08/28 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
Vue 动态设置路由参数的案例分析
2018/04/24 Javascript
[01:04:22]2018DOTA2亚洲邀请赛 3.31 小组赛 B组 IG vs EG
2018/04/01 DOTA
对Python3 pyc 文件的使用详解
2019/02/16 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
浅谈CSS3动画的回调处理
2016/07/21 HTML / CSS
基于 HTML5 的 WebGL 3D 版俄罗斯方块的示例代码
2018/05/28 HTML / CSS
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
Redbubble法国:由独立艺术家设计的独特产品
2019/01/08 全球购物
大码女装:Ulla Popken
2019/08/06 全球购物
乌克兰机票、铁路和巴士票、酒店搜索、保险:Tickets.ua
2020/01/11 全球购物
全球领先的在线cosplay服装商店:RoleCosplay
2020/01/18 全球购物
Lentiamo比利时:便宜的隐形眼镜
2020/02/14 全球购物
银行会计财务工作个人的自我评价
2013/10/29 职场文书
《数星星的孩子》教学反思
2014/04/11 职场文书
大学开学计划书
2014/04/30 职场文书
售后服务承诺函格式
2015/01/21 职场文书
求职自我推荐信
2015/03/24 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
文艺演出主持词
2015/07/01 职场文书
教你怎么用Python实现多路径迷宫
2021/04/29 Python
Python一些基本的图像操作和处理总结
2021/06/23 Python