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 相关文章推荐
mysql5详细安装教程
Jan 15 PHP
PHP 函数学习简单小结
Jul 08 PHP
用PHP的超级变量$_GET获取HTML表单(Form) 数据
May 07 PHP
php替换超长文本中的特殊字符的函数代码
May 22 PHP
php页面消耗内存过大的处理办法
Mar 18 PHP
解析thinkphp中的导入文件标签
Jun 20 PHP
PHP导航下拉菜单的实现如此简单
Sep 22 PHP
PHP大批量插入数据库的3种方法和速度对比
Jul 08 PHP
支持中文、字母、数字的PHP验证码
May 04 PHP
Symfony实现行为和模板中取得request参数的方法
Mar 17 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
php文件上传 你真的掌握了吗
Nov 28 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
async和DOM Script文件加载比较
2014/07/20 PHP
PHP实现设计模式中的抽象工厂模式详解
2014/10/11 PHP
Yii2增加验证码步骤详解
2016/04/25 PHP
CheckBoxList多选样式jquery、C#获取选择项
2013/09/06 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
JavaScript中实现PHP的打乱数组函数shuffle实例
2014/10/11 Javascript
jQuery中outerWidth()方法用法实例
2015/01/19 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
JavaScript中的Promise使用详解
2015/06/24 Javascript
Jquery实现仿京东商城省市联动菜单
2015/11/19 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
Vue 配合eiement动态路由,权限验证的方法
2018/09/26 Javascript
深入理解js A*寻路算法原理与具体实现过程
2018/12/13 Javascript
Python编写屏幕截图程序方法
2015/02/18 Python
详谈python http长连接客户端
2017/06/12 Python
python UDP(udp)协议发送和接收的实例
2019/07/22 Python
使用python写的opencv实时监测和解析二维码和条形码
2019/08/14 Python
Python实现ATM系统
2020/02/17 Python
python词云库wordCloud使用方法详解(解决中文乱码)
2020/02/17 Python
Python使用Matlab命令过程解析
2020/06/04 Python
keras训练曲线,混淆矩阵,CNN层输出可视化实例
2020/06/15 Python
关于tf.matmul() 和tf.multiply() 的区别说明
2020/06/18 Python
英国电动工具购买网站:Anglia Tool Centre
2017/04/25 全球购物
加拿大领先的牛仔零售商:Bluenotes
2018/01/22 全球购物
保加利亚服装和鞋类购物网站:Bibloo.bg
2020/11/08 全球购物
公司道歉信范文
2014/01/09 职场文书
销售内勤岗位职责
2014/04/15 职场文书
医院合作协议书
2014/08/19 职场文书
医德医风自我评价
2014/09/19 职场文书
师德师风自我剖析材料
2014/09/27 职场文书
银行授权委托书样本
2014/10/13 职场文书
简历中自我评价范文
2015/03/11 职场文书
证婚人婚礼致辞
2015/07/28 职场文书
大学生社会实践感想
2015/08/11 职场文书
高三物理教学反思
2016/02/20 职场文书
在vue中import()语法不能传入变量的问题及解决
2022/04/01 Vue.js