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逐行输出(ob_flush与flush的组合)
Feb 04 PHP
smarty 缓存控制前的页面静态化原理
Mar 15 PHP
PHP中将ip地址转成十进制数的两种实用方法
Aug 15 PHP
简单谈谈php中ob_flush和flush的区别
Nov 27 PHP
WordPress主题中添加文章列表页页码导航的PHP代码实例
Dec 22 PHP
smarty高级特性之对象的使用方法
Dec 25 PHP
PHP模板引擎Smarty自定义变量调解器用法
Apr 11 PHP
PHP实现网页内容html标签补全和过滤的方法小结【2种方法】
Apr 27 PHP
php脚本守护进程原理与实现方法详解
Jul 20 PHP
在laravel5.2中实现点击用户头像更改头像的方法
Oct 14 PHP
PHP正则之正向预查与反向预查讲解与实例
Apr 06 PHP
PHP获取php,mysql,apche的版本信息及更多服务器信息
Mar 09 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 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
javascript一些不错的函数脚本代码
2008/09/10 Javascript
javascript 按回车键相应按钮提交事件
2009/11/02 Javascript
jQuery实现的网页换肤效果示例
2016/09/20 Javascript
vue.js将unix时间戳转换为自定义时间格式
2017/01/03 Javascript
如何使用JavaScript实现栈与队列
2019/06/24 Javascript
layui实现二维码弹窗、并下载到本地的方法
2019/09/25 Javascript
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
js实现微信聊天界面
2020/08/09 Javascript
Vue 构造选项 - 进阶使用说明
2020/08/14 Javascript
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
初学Python实用技巧两则
2014/08/29 Python
批量获取及验证HTTP代理的Python脚本
2017/04/23 Python
Python内建模块struct实例详解
2018/02/02 Python
win7下python3.6安装配置方法图文教程
2018/07/31 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
Python队列、进程间通信、线程案例
2019/10/25 Python
python之列表推导式的用法
2019/11/29 Python
Python模块相关知识点小结
2020/03/09 Python
浅谈sklearn中predict与predict_proba区别
2020/06/28 Python
keras分类之二分类实例(Cat and dog)
2020/07/09 Python
Python GUI库Tkiner使用方法代码示例
2020/11/27 Python
Eastbay官网:美国最大的运动鞋网络零售商
2016/07/27 全球购物
匡威爱尔兰官网:Converse爱尔兰
2019/06/09 全球购物
印度民族服装购物网站:BIBA
2019/08/05 全球购物
JPA的特点
2014/10/25 面试题
物业门卫岗位职责
2013/12/28 职场文书
大学毕业感言100字
2014/02/03 职场文书
初二学生评语大全
2014/12/26 职场文书
2015年度电厂个人工作总结
2015/05/13 职场文书
2015年出纳年终工作总结
2015/05/14 职场文书
Python数据清洗工具之Numpy的基本操作
2021/04/22 Python
go语言求任意类型切片的长度操作
2021/04/26 Golang
Nginx实现会话保持的两种方式
2022/03/18 Servers
python使用shell脚本创建kafka连接器
2022/04/29 Python
nginx 添加http_stub_status_module模块
2022/05/25 Servers