本文实例讲述了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
(三)、核心代码说明
注册代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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" ); |
登录代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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文件代码:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
/* *@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程序设计有所帮助。
原文链接:https://www.cnblogs.com/lisqiong/p/5568064.html