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注入点构造代码
Jun 14 PHP
PHP+MySQL 手工注入语句大全 推荐
Oct 30 PHP
PHP表单验证的3个函数ISSET()、empty()、is_numeric()的使用方法
Aug 22 PHP
通过PHP的内置函数,通过DES算法对数据加密和解密
Jun 21 PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 PHP
php MessagePack介绍
Oct 06 PHP
php一维二维数组键排序方法实例总结
Nov 13 PHP
浅谈php正则表达式中的非贪婪模式匹配的使用
Nov 25 PHP
使用symfony命令创建项目的方法
Mar 17 PHP
PHP使用finfo_file()函数检测上传图片类型的实现方法
Apr 18 PHP
Laravel事件监听器用法实例分析
Mar 12 PHP
安装docker和docker-compose实例详解
Jul 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类与对象中的private访问控制的疑问
2012/11/01 PHP
将list转换为json失败的原因
2013/12/17 Javascript
我的Node.js学习之路(二)NPM模块管理
2014/07/06 Javascript
javascript中实现兼容JAVA的hashCode算法代码分享
2020/08/11 Javascript
浅谈JavaScript超时调用和间歇调用
2015/08/30 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
2016/07/12 Javascript
node.js实现复制文本到剪切板的功能
2017/01/23 Javascript
jQuery获取Table某列的值(推荐)
2017/03/03 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
node.js程序作为服务并在windows下开机自启动(用forever)
2017/03/29 Javascript
jQuery实现动态给table赋值的方法示例
2017/07/04 jQuery
详解vue2 $watch要注意的问题
2017/09/08 Javascript
JavaScript数组去重算法实例小结
2018/05/07 Javascript
vue实现配置全局访问路径头(axios)
2019/11/01 Javascript
原生JS实现拖拽功能
2020/12/16 Javascript
python去除空格和换行符的实现方法(推荐)
2017/01/04 Python
解决python线程卡死的问题
2019/02/18 Python
Python list列表中删除多个重复元素操作示例
2019/02/27 Python
Django使用AJAX调用自己写的API接口的方法
2019/03/06 Python
python实现桌面托盘气泡提示
2019/07/29 Python
使用pycharm在本地开发并实时同步到服务器
2019/08/02 Python
Pytorch Tensor基本数学运算详解
2019/12/30 Python
关于pytorch处理类别不平衡的问题
2019/12/31 Python
Python实现自动访问网页的例子
2020/02/21 Python
Python drop方法删除列之inplace参数实例
2020/06/27 Python
纯CSS3实现绘制各种图形实现代码详细整理
2012/12/26 HTML / CSS
Jacadi Paris英国官网:法国童装品牌
2019/08/09 全球购物
如何打开WebSphere远程debug
2014/10/10 面试题
国家励志奖学金获奖感言
2014/01/09 职场文书
高二学生评语大全
2014/04/25 职场文书
园艺师求职信
2014/04/27 职场文书
2014年加油站工作总结
2014/12/04 职场文书
听证通知书
2015/04/24 职场文书
虚拟机linux端mysql数据库无法远程访问的解决办法
2021/05/26 MySQL
小程序wx.getUserProfile接口的具体使用
2021/06/02 Javascript
配置Kubernetes外网访问集群
2022/03/31 Servers