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 15 PHP
php Undefined index的问题
Jun 01 PHP
使用PHP实现密保卡功能实现代码<打包下载直接运行>
Oct 09 PHP
PHP下打开phpMyAdmin出现403错误的问题解决方法
May 23 PHP
PHP使用CURL实现对带有验证码的网站进行模拟登录的方法
Jul 23 PHP
php通过array_shift()函数移除数组第一个元素的方法
Mar 18 PHP
php观察者模式应用场景实例详解
Feb 03 PHP
php+mysql+jquery实现日历签到功能
Feb 27 PHP
PHP memcache在微信公众平台的应用方法示例
Sep 13 PHP
三个思路解决laravel上传文件报错:413 Request Entity Too Large问题
Nov 13 PHP
php实现微信支付之企业付款
May 30 PHP
php中array_fill函数的实例用法
Mar 02 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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
用php解析html的实现代码
2011/08/08 PHP
php实现文件下载实例分享
2014/06/02 PHP
php数据访问之查询关键字
2016/05/09 PHP
[原创]PHP实现生成vcf vcard文件功能类定义与使用方法详解【附demo源码下载】
2017/09/02 PHP
PHP实现求解最长公共子串问题的方法
2017/11/17 PHP
PHP+MySQL实现输入页码跳转到指定页面功能示例
2018/06/01 PHP
深入Javascript函数、递归与闭包(执行环境、变量对象与作用域链)使用详解
2013/05/08 Javascript
IE、FF、Chrome浏览器中的JS差异介绍
2013/08/13 Javascript
jquery操作select方法汇总
2015/02/05 Javascript
JavaScript的代码编写格式规范指南
2015/12/07 Javascript
node-sass安装失败的原因与解决方法
2017/09/04 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
一个因@click.stop引发的bug的解决
2019/01/08 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
element-ui tree结构实现增删改自定义功能代码
2020/08/31 Javascript
tensorflow建立一个简单的神经网络的方法
2018/02/10 Python
python实现csv格式文件转为asc格式文件的方法
2018/03/23 Python
python使用turtle库绘制时钟
2020/03/25 Python
python实现AES加密与解密
2019/03/28 Python
Django项目主urls导入应用中views的红线问题解决
2019/08/10 Python
python实现的按要求生成手机号功能示例
2019/10/08 Python
pytorch绘制并显示loss曲线和acc曲线,LeNet5识别图像准确率
2020/01/02 Python
Python连接Impala实现步骤解析
2020/08/04 Python
PyTorch如何搭建一个简单的网络
2020/08/24 Python
Python 制作查询商品历史价格的小工具
2020/10/20 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
使用CSS3设计地图上的雷达定位提示效果
2016/04/05 HTML / CSS
伦敦剧院门票:London Theatre Direct
2018/11/21 全球购物
.NET面试10题
2014/02/24 面试题
介绍一下Java中的static关键字
2012/05/12 面试题
物理教育专业毕业生推荐信
2013/11/03 职场文书
庆祝教师节标语
2014/10/09 职场文书
英文道歉信
2015/01/20 职场文书
简单的辞职信模板
2015/05/12 职场文书
Java基于字符界面的简易收银台
2021/06/26 Java/Android