php+redis实现注册、删除、编辑、分页、登录、关注等功能,
本文实例讲述了php+redis实现注册、删除、编辑、分页、登录、关注等功能。分享给大家供大家参考,具体如下:
主要界面
连接redis
redis.php
1 <?php2 //实例化
3 $redis = newRedis();4 //连接服务器
5 $a=$redis->connect("localhost",6379);6 //var_dump($a);7 //授权
8 $redis->auth("107lab");
注册界面
add.php
1
2 用户名:
3 密码:
4 年龄:
5
6
7
注册实现
reg.php
1 <?php2 require("redis.php");3 $username = $_POST['username'];4 $password = md5($_POST['password']);5 $age = $_POST['age'];6 //echo $username.$password.$age;
7 $uid = $redis->incr("userid");//设置自增id,相当于主键
8 $redis->hMset("user:".$uid,array("uid"=>$uid,"username"=>$username,"password"=>$password,"age"=>$age));//用hash类型存储用户比较方便9 //将用户id存入一个链表中,便于统计数据
10 $redis->rpush("uid",$uid);11 //将用id存入以用户名为键的字符类型中,便于查看用户是否存在。
12 $redis->set("username:".$username,$uid);13 header('location:list.php');14
15
列表页面
list.php
1 注册
2 <?php3 require("redis.php");4 if(!empty($_COOKIE['auth'])){5 $id = $redis->get("auth:".$_COOKIE['auth']);6 $name = $redis->hget("user:".$id,"username");7 ?>
8 欢迎您:<?php echo $name;?> 退出
9 <?php } else { ?>
10 登录
11 <?php } ?>
12 <?php13 require("redis.php");14 //用户总数
15 $count = $redis->lsize("uid");//获取链表的长度16 //echo $count;17 //页大小
18 $page_size = 3;19 //当前页码
20 $page_num=(!empty($_GET['page']))?$_GET['page']:1;21 //页总数
22 $page_count = ceil($count/$page_size);23 $ids = $redis->lrange("uid",($page_num-1)*$page_size,(($page_num-1)*$page_size+$page_size-1));24 //var_dump($ids);
25 foreach($ids as $v){26 $data[]=$redis->hgetall("user:".$v);27 }28 /*
29 //以下为最初想到的分页处理,放入一个数组中,根据uid的最大值来当总个数,但是删除个别用户以后,uid不会变小,所以建议用链表,因为他有个lsize函数可以求出链表长度30 //根据userid获取所有用户31 for($i=1;$i<=($redis->get("userid"));$i++){32 $data[]=$redis->hgetall("user:".$i);33 }34 //过滤空值35 $data = array_filter($data);36 //var_dump($data);37 */
38 ?>
39
40
41
uid42
username43
age44
操作45
46 <?php foreach($data as $v){ ?>
47
48
<?php echo $v['uid']?>49
<?php echo $v['username']?>50
<?php echo $v['age']?>51
52 删除
53 编辑
54 <?php if(!empty($_COOKIE['auth']) && $id != $v['uid']){ ?>
55 加关注
56 <?php } ?>
57
58
59 <?php } ?>
60
61
62 <?php if(($page_num-1)>=1){ ?>
63 上一页
64 <?php } ?>
65 <?php if(($page_num+1)<=$page_count){ ?>
66 下一页
67 <?php } ?>
68 首页
69 尾页
70 当前<?php echo $page_num;?>页71 总共<?php echo $page_count;?>页72 总共<?php echo $count;?>个用户73
74
75
76
77
78
我关注了谁79 <?php80 $data = $redis->smembers("user:".$id.":following");81 foreach($data as $v){82 $row = $redis->hgetall("user:".$v);83 ?>
84
85
<?php echo $row['uid'];?>86
<?php echo $row['username'];?>87
<?php echo $row['age'];?>88
89 <?php } ?>
90
91
92
我的粉丝93 <?php94 $data = $redis->smembers("user:".$id.":followers");95 foreach($data as $v){96 $row = $redis->hgetall("user:".$v);97 ?>
98
99
<?php echo $row['uid'];?>100
<?php echo $row['username'];?>101
<?php echo $row['age'];?>102
103 <?php } ?>
104
<?phpsetcookie ("auth","",time()-1);header("location:list.php");
登录
login.php
1 <?php2 require("redis.php");3 $username = $_POST['username'];4 $pass = $_POST['password'];5 //根据注册时存储的以用户名为键的字符类型中查找用户id
6 $id = $redis->get("username:".$username);7 if(!empty($id)){8 $password = $redis->hget("user:".$id,"password");9 if(md5($pass) == $password){10 $auth = md5(time().$username.rand());11 $redis->set("auth:".$auth,$id);12 setcookie("auth",$auth,time()+86400);13 header("location:list.php");14 }15 }16 ?>
17
18 用户名:
19 密码:
20
21
删除
del.php
$username = $redis->hget("user:".$id,"username");$a=$redis->del("user:".$uid);$redis->del("username:".$username);$redis->lrem("uid",$uid);//var_dump($a);
header("location:list.php");
编辑界面
mod.php
1 <?php2 require("redis.php");3 $uid = $_GET['id'];4 $data=$redis->hgetall("user:".$uid);5 ?>
6
7
8 用户名:
9 年龄:
10
11
12
编辑功能
doedit.php
1 <?php2 require('redis.php');3 $uid = $_POST['uid'];4 $username = $_POST['username'];5 $age = $_POST['age'];6 $a=$redis->hmset("user:".$uid,array("username"=>$username,"age"=>$age));7 if($a){8 header("location:list.php");9 }else{10 header("location:mod.php?id=".$uid);11 }
加关注
addfans.php
1 <?php2 //关注功能,建议用集合实现,因为集合元素唯一,并且可以容易求出两个用户粉丝之间交集与差集,进而进行好友推荐功能
3 $id = $_GET['id'];4 $uid = $_GET['uid'];5 require("redis.php");6 $redis->sadd("user:".$uid.":following",$id);7 $redis->sadd("user:".$id.":followers",$uid);8 header("location:list.php");
https://i-blog.csdnimg.cn/blog_migrate/18b10ed1e36e89a21e4b38b98e684e61.pngwww.dengb.comtruehttps://i-blog.csdnimg.cn/blog_migrate/18b10ed1e36e89a21e4b38b98e684e61.pngTechArticlephp+redis实现注册、删除、编辑、分页、登录、关注等功能, 本文实例讲述了php+redis实现注册、删除、编辑、分页、登录、关注等功能。分享...