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 xfocus防注入资料
Apr 27 PHP
php sprintf()函数让你的sql操作更安全
Jul 23 PHP
PHP生成HTML静态页面实例代码
Aug 31 PHP
处理php自动反斜杠的函数代码
Jan 05 PHP
VB中的RasEnumConnections函数返回632错误解决方法
Jul 29 PHP
php创建多级目录的方法
Mar 24 PHP
浅谈PHP中output_buffering
Jul 13 PHP
CodeIgniter整合Smarty的方法详解
Aug 25 PHP
php爬取天猫和淘宝商品数据
Feb 23 PHP
详解php伪造Referer请求反盗链资源
Jan 24 PHP
PHP设计模式之 策略模式Strategy详解【对象行为型】
May 01 PHP
ThinkPHP5.1验证码功能实现的示例代码
Jun 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
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
PHP中比较两个字符串找出第一个不同字符位置例子
2014/04/08 PHP
php遍历类中包含的所有元素的方法
2015/05/12 PHP
yii2实现 "上一篇,下一篇" 功能的代码实例
2017/02/04 PHP
基于JQuery实现鼠标点击文本框显示隐藏提示文本
2012/02/23 Javascript
如何判断鼠标是否在DIV的区域内
2013/11/13 Javascript
Jquery原生态实现表格header头随滚动条滚动而滚动
2014/03/18 Javascript
邮箱下拉自动填充选择示例代码附图
2014/04/03 Javascript
js实现ifram取父窗口URL地址的方法
2015/02/09 Javascript
jQuery结合AJAX之在页面滚动时从服务器加载数据
2015/06/30 Javascript
JS实现常见的TAB、弹出层效果(TAB标签,斑马线,遮罩层等)
2015/10/08 Javascript
JavaScript如何调试有哪些建议和技巧附五款有用的调试工具
2015/10/28 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
webpack里使用jquery.mCustomScrollbar插件的方法
2018/05/30 jQuery
Puppet的一些技巧
2018/09/17 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
2019/06/21 Javascript
nodejs+koa2 实现模仿springMVC框架
2020/10/21 NodeJs
js 实现碰撞检测的示例
2020/10/28 Javascript
Python中django学习心得
2017/12/06 Python
基于python3 OpenCV3实现静态图片人脸识别
2018/05/25 Python
python取数作为临时极大值(极小值)的方法
2018/10/15 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
Python Celery异步任务队列使用方法解析
2020/08/10 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
MaBelle玛贝尔香港官网:香港钻饰连锁店
2019/09/09 全球购物
主持人演讲稿
2014/05/13 职场文书
幼师求职自荐信
2014/05/31 职场文书
英文道歉信
2015/01/20 职场文书
爱心捐款感谢信
2015/01/20 职场文书
终止解除劳动合同证明书
2015/06/17 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
安全教育主题班会教案
2015/08/12 职场文书
《画家和牧童》教学反思
2016/02/17 职场文书
五年级作文之想象作文
2019/10/30 职场文书
深入浅析python3 依赖倒置原则(示例代码)
2021/07/09 Python
Win10多屏显示如何设置?Win10电脑多屏显示设置操作方法
2022/07/07 数码科技