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 可阅读随机字符串代码
May 26 PHP
详解PHP中的状态模式编程
Aug 11 PHP
php5.4传引用时报错问题分析
Jan 22 PHP
CodeIgniter基于Email类发邮件的方法
Mar 29 PHP
php微信开发之批量生成带参数的二维码
Jun 26 PHP
php微信公众平台配置接口开发程序
Sep 22 PHP
PHP基于DOM创建xml文档的方法示例
Feb 08 PHP
PHP基于方差和标准差计算学生成绩的稳定性示例
Jul 04 PHP
如何修改Laravel中url()函数生成URL的根地址
Aug 11 PHP
ThinkPHP框架实现的邮箱激活功能示例
Jun 15 PHP
PHP观察者模式实例分析【对比JS观察者模式】
May 22 PHP
PHP后门隐藏的一些技巧总结
Nov 04 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数组去除空值函数分享
2015/02/02 PHP
PHP框架Laravel插件Pagination实现自定义分页
2020/04/22 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
Vue.js开发环境搭建
2016/11/10 Javascript
详谈$.data()的用法和作用
2017/02/13 Javascript
javascript定时器取消定时器及优化方法
2017/07/08 Javascript
微信小程序数据存储与取值详解
2018/01/30 Javascript
小程序指纹验证的实现代码
2018/12/04 Javascript
JS使用canvas中的measureText方法测量字体宽度示例
2019/02/02 Javascript
手挽手带你学React之React-router4.x的使用
2019/02/14 Javascript
js实现简单分页导航栏效果
2019/06/28 Javascript
解决Layui数据表格显示无数据提示的问题
2019/11/14 Javascript
使用JavaScript通过前端发送电子邮件
2020/05/22 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
[04:46]2018年度玩家喜爱的电竞媒体-完美盛典
2018/12/16 DOTA
[50:54]完美世界DOTA2联赛 GXR vs IO 第三场 11.07
2020/11/10 DOTA
python实现目录树生成示例
2014/03/28 Python
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
Python实现的网页截图功能【PyQt4与selenium组件】
2018/07/12 Python
使用Python实现在Windows下安装Django
2018/10/17 Python
python 实现数字字符串左侧补零的方法
2018/12/04 Python
使用python绘制二元函数图像的实例
2019/02/12 Python
python全栈开发语法总结
2020/11/22 Python
css3实现平移效果(transfrom:translate)的示例
2020/11/13 HTML / CSS
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
Turnbull & Asser官网:英国皇室御用的顶级定制衬衫
2019/01/31 全球购物
行政副总岗位职责
2014/02/23 职场文书
模特大赛策划方案
2014/05/28 职场文书
义和团口号
2014/06/17 职场文书
在职员工证明书
2014/09/19 职场文书
夫妻分居协议书范本
2014/11/28 职场文书
新学期开学寄语2016
2015/12/04 职场文书
承诺书的内容有哪些,怎么写?
2019/06/21 职场文书
MySQL分库分表详情
2021/09/25 MySQL
Python利用capstone实现反汇编
2022/04/06 Python
vue 实现弹窗关闭后刷新效果
2022/04/08 Vue.js