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循环语句 for()与foreach()用法区别介绍
Sep 05 PHP
PHP如何利用P3P实现跨域
Aug 24 PHP
PHP中使用localhost连接Mysql不成功的解决方法
Aug 20 PHP
PHP改进计算字符串相似度的函数similar_text()、levenshtein()
Oct 27 PHP
php压缩和解压缩字符串的方法
Mar 14 PHP
php上传图片类及用法示例
May 11 PHP
PHP生成图片缩略图类示例
Jan 12 PHP
PHP实现的DES加密解密类定义与用法示例
Nov 02 PHP
phpstudy2018升级MySQL5.5为5.7教程(图文)
Oct 24 PHP
PHP explode()函数用法讲解
Feb 15 PHP
php中yar框架实例用法讲解
Dec 27 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
Mar 04 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实现的获取URL信息的类
2007/01/02 PHP
php MySQL与分页效率
2008/06/04 PHP
PHP里的单例类写法实例
2015/06/25 PHP
Yii中表单用法实例详解
2016/01/05 PHP
Symfony2学习笔记之系统路由详解
2016/03/17 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
Laravel Eloquent ORM 多条件查询的例子
2019/10/10 PHP
laravel 数据验证规则详解
2019/10/23 PHP
JS添加删除一组文本框并对输入信息加以验证判断其正确性
2013/04/11 Javascript
使用 Node.js 做 Function Test实现方法
2013/10/25 Javascript
Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例
2015/01/01 NodeJs
JavaScript如何获取数组最大值和最小值
2015/11/18 Javascript
详解JavaScript函数
2015/12/01 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
那些精彩的JavaScript代码片段
2017/01/12 Javascript
vue插件draggable实现拖拽移动图片顺序
2018/12/01 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
js神秘的电报密码 哈弗曼编码实现
2019/09/10 Javascript
vue cli3 配置proxy代理无效的解决
2019/10/30 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
JavaScript如何实现图片处理与合成
2020/05/29 Javascript
vue-cli单页面预渲染seo-prerender-spa-plugin操作
2020/08/10 Javascript
python查找第k小元素代码分享
2013/12/18 Python
python决策树之C4.5算法详解
2017/12/20 Python
shell命令行,一键创建 python 模板文件脚本方法
2018/03/20 Python
python3.7.0的安装步骤
2018/08/27 Python
对Python 内建函数和保留字详解
2018/10/15 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
python保存字典和读取字典的实例代码
2019/07/07 Python
Python操作dict时避免出现KeyError的几种解决方法
2020/09/20 Python
彪马香港官方网上商店:PUMA香港
2020/12/06 全球购物
播音主持专业个人自我评价
2014/01/09 职场文书
师德师风自查总结
2014/10/14 职场文书
致运动员加油稿
2015/07/21 职场文书
高考要来啦!用Python爬取历年高考数据并分析
2021/06/03 Python