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获取163、gmail、126等邮箱联系人地址【已测试2009.10.10】
Oct 11 PHP
根据ip调用新浪api获取城市名并转成拼音
Mar 07 PHP
完美实现wordpress禁止文章修订和自动保存的方法
Nov 03 PHP
PHP实现的简单三角形、矩形周长面积计算器分享
Nov 18 PHP
PHP清除字符串中所有无用标签的方法
Dec 01 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
PHP中的表达式简述
May 29 PHP
php单链表实现代码分享
Jul 04 PHP
PHP Mysqli 常用代码集合
Nov 12 PHP
thinkPHP简单调用函数与类库的方法
Mar 15 PHP
php7函数,声明,返回值等新特性介绍
May 25 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
Aug 30 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脚本的10个技巧(1)
2006/10/09 PHP
PHPWind 发帖回帖Api PHP版打包下载
2010/02/08 PHP
php 智能404跳转代码,适合换域名没改变目录的网站
2010/06/04 PHP
PHP架构及原理知识点详解
2019/12/22 PHP
php7 新增功能实例总结
2020/05/25 PHP
select组合框option的捕捉实例代码
2008/09/30 Javascript
javascript 精粹笔记
2010/05/09 Javascript
javascript 通用loading动画效果实例代码
2014/01/14 Javascript
jquery取消事件冒泡的三种方法(推荐)
2016/05/28 Javascript
js 判断数据类型的几种方法
2017/01/13 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
vue 详情跳转至列表页实现列表页缓存
2019/03/27 Javascript
Weex开发之地图篇的具体使用
2019/10/16 Javascript
详解python的argpare和click模块小结
2019/03/31 Python
python版DDOS攻击脚本
2019/06/12 Python
Python时间序列缺失值的处理方法(日期缺失填充)
2019/08/11 Python
redis数据库及与python交互用法简单示例
2019/11/01 Python
python 的numpy库中的mean()函数用法介绍
2020/03/03 Python
python 制作简单的音乐播放器
2020/11/25 Python
python复合条件下的字典排序
2020/12/18 Python
python实现三种随机请求头方式
2021/01/05 Python
基于HTML5 Canvas 实现弹出框效果
2017/06/05 HTML / CSS
Stutterheim瑞典:瑞典高级外套时装品牌
2019/06/24 全球购物
Nayomi官网:沙特阿拉伯王国睡衣和内衣品牌
2020/12/19 全球购物
描述一下JVM加载class文件的原理机制
2013/12/08 面试题
高考寄语大全
2014/04/08 职场文书
《傅雷家书》教学反思
2014/04/20 职场文书
银行求职信范文
2014/05/26 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
2015年高考寄语或鼓励的话
2015/03/23 职场文书
《老人与海鸥》教学反思
2016/02/16 职场文书
一些让Python代码简洁的实用技巧总结
2021/08/23 Python
SQL Server 忘记密码以及重新添加新账号
2022/04/26 SQL Server