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 8小时时间差的解决方法小结
Dec 22 PHP
PHP通过header实现文本文件下载的代码
Aug 08 PHP
php中json_decode()和json_encode()的使用方法
Jun 04 PHP
关于尾递归的使用详解
May 02 PHP
探讨各种PHP字符串函数的总结分析
Jun 05 PHP
PHP基础知识介绍
Sep 17 PHP
Codeigniter上传图片出现“You did not select a file to upload”错误解决办法
Jun 12 PHP
Yii框架表单模型和验证用法
May 20 PHP
Yii2.0 Basic代码中路由链接被转义的处理方法
Sep 21 PHP
php中让人头疼的浮点数运算分析
Oct 10 PHP
PHP基于反射机制实现插件的可插拔设计详解
Nov 10 PHP
PHP实现的大文件切割与合并功能示例
Apr 10 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开发留言板功能
2019/11/19 PHP
javascript 时间比较实现代码
2009/10/28 Javascript
理解Javascript_03_javascript全局观
2010/10/11 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
Jquery插件编写简明教程
2014/03/25 Javascript
用于deeplink的js方法(判断手机是否安装app)
2014/04/02 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
使用jQuery制作基础的Web图片轮播效果
2016/04/22 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
2016/05/16 Javascript
浅谈在vue项目中如何定义全局变量和全局函数
2017/10/24 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
Vue异步组件处理路由组件加载状态的解决方案
2018/09/07 Javascript
Node.JS发送http请求批量检查文件中的网页地址、服务是否有效可用
2019/11/20 Javascript
js最全的数组的降维5种办法(小结)
2020/04/28 Javascript
跟老齐学Python之再深点,更懂list
2014/09/20 Python
python使用正则表达式提取网页URL的方法
2015/05/26 Python
网站渗透常用Python小脚本查询同ip网站
2017/05/08 Python
Python 文本文件内容批量抽取实例
2018/12/10 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
Pytorch上下采样函数--interpolate用法
2020/07/07 Python
Pandas中两个dataframe的交集和差集的示例代码
2020/12/13 Python
印度最大的网上花店:Ferns N Petals(鲜花、礼品和蛋糕)
2017/10/16 全球购物
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
无工作经验者个人求职信范文
2013/12/22 职场文书
优秀员工表扬信
2014/01/17 职场文书
企业宣传方案
2014/03/04 职场文书
会计自荐信范文
2014/03/09 职场文书
学校献爱心活动总结
2014/07/08 职场文书
银行转正自我鉴定
2014/09/29 职场文书
2015年招聘工作总结
2014/12/12 职场文书
教师自荐信范文
2015/03/06 职场文书
MySQL悲观锁与乐观锁的实现方案
2021/11/02 MySQL
90后经典动画片排行:《数码宝贝》第二,《小鲤鱼历险记》在榜
2022/03/18 日漫
SpringCloud Feign请求头删除修改的操作代码
2022/03/20 Java/Android