redis 用户好友管理登陆简单系统

本文介绍了一个基于Redis构建的用户管理系统,包括用户注册、登录、用户删除和修改功能。利用Redis的哈希存储用户信息,键为'user:id'。用户列表分页展示,并通过链表管理用户ID。删除用户时,需同时删除哈希键和链表中的ID。登录验证时,根据用户名获取ID,再从哈希中对比密码。此外,还提供了添加好友的功能。
摘要由CSDN通过智能技术生成

用户注册     用户登录   用户的删除和修改  分页显示用户   添加用户的好友

 redis.php:

<?php
$redis  = new Redis();//实例化
$redis->connect("192.168.114.251");//连接redis的服务器。
$redis->auth('guangzhou');//密码验证
?>


register.php用户注册页面,

思考:如何来存储用户的具体信息,使用哈希,构造一个用户键

user:id

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>新建网页</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<script type="text/javascript">

</script>

<style type="text/css">
</style>
</head>
    <body>
    <h1>用户注册页面</h1>
        <form action="action.php?act=reg" method="post"/>
        用户名:<input type="text" name="username"/><br/>
        密 码:<input type="text" name="password" /> <br/>
        年 龄:<input type="text" name="age"/><br/>
            <input type="submit" value="注册"/>
        </form>
    </body>
</html>

action.php:


<?php
        require 'redis.php';
        $act = isset($_GET['act'])?$_GET['act']:'';
        if($act=='reg'){//完成用户的注册
                    //接收传递过来的用户名和密码和年龄
                    $username = $_POST['username'];
                    $password = $_POST['password'];
                    $age = $_POST['age'];
                    ///创建一个用户的id
                    $userid = $redis->incr('id');//
                    //把用户信息存储到哈希里面,设置哈希的键
                    $redis->hmset("user:".$userid,array('userid'=>$userid,'username'=>$username,'password'=>$password,'age'=>$age));
                    //把注册用户的id,存储到链表里面。
                    //构造链表的一个键  userid
                    $redis->lpush('userid',$userid);
                    //构建一个字符串的键,用于存储用户的id
                    $redis->set('username:'.$username,$userid);

                    //添加完成后,跳转到index.php页面
                    header("location:index.php");
        
        }

?>


index.php 首页面,用于显示用户列表页面。

 

<?php
require 'redis.php';
//取出当前登录用户的好友,
session_start();
$userid = $_SESSION['id'];//登录用户的id
$username = $_SESSION['username'];
echo $username;
echo '<hr>';
//取出所有的用户,从链表里面取出用户的id,根据id拼接成哈希的键,再取出具体的数据
//完成分页显示用户:
//(1)先计算总的记录数,计算链表里面元素的个数
$count = $redis->lsize('userid');
//(2)定义每页显示的记录数;
$perpage = 2;
//(3)计算总的页数
$pagecount = ceil($count/$perpage);
//(4)定义当前页面
$page = isset($_GET['page'])?max(1,min($_GET['page'],$pagecount)):1;
//(5)构建limit变量
/*                                        
第1页:      lrange('userid',0,1)      ($page-1)*$perpage         ($page-1)*$perpage+$perpage-1
第2页:      lrange('userid',2,3)         
第3页:      lrange('userid',4,5)         

*/

//取出链表里面的数据
//$ids = $redis->lrange('userid',0,-1);//取出链表里面的 所有数据
$ids = $redis->lrange('userid',($page-1)*$perpage,($page-1)*$perpage+$perpage-1);//取出链表里面的 所有数据

//定义一个空数组,用于接收从哈希里面取出的用户数据
$data=array();
foreach($ids as $v){
        $data[]=$redis->hgetall("user:".$v);
}
?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>新建网页</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<script type="text/javascript">

</script>

<style type="text/css">
</style>
</head>
    <body>
    <h1><a href="register.php">用户注册</a></h1>
    <h1>用户列表</h1>
    <table width="600" border="1">
                <tr>
                    <td>用户名称</td>
                    <td>用户密码</td>
                    <td>用户年龄</td>
                    <td>操作</td>
                </tr>
    <?php foreach($data as $v){?>
                <tr>
                    <td><?php echo $v['username']?></td>
                    <td><?php echo $v['password']?></td>
                    <td><?php echo $v['age']?></td>
                    <td><a href="del.php?id=<?php echo $v['userid']?>">删除</a> | 修改|<a href="addfield.php?id=<?php echo $v['userid']?>">添加好友</a></td>
                </tr>

      <?php } ?>

      <tr>
            <td colspan="4"><a href="?page=<?php echo min($page+1,$pagecount)?>">下一页</a>|<a href="?page=<?php echo max($page-1,1)?>">上一页</a></td>
      </tr>
    </table>
    <?php 

//构造集合的键field:$userid
$haoyou = $redis->sMembers("field:".$userid);//存储的是id
//通过好友的id,从哈希里面取出具体用户信息。


//定义一个空数组,用于接收从哈希里面取出的用户数据
$haoyoudata=array();
foreach($haoyou as $v){
        $haoyoudata[]=$redis->hgetall("user:".$v);
}
echo '<pre>';
print_r($haoyoudata);
    ?>
    </body>
</html>

del.php 用于删除用户,要注意删除  哈希键 ,还要删除链表里面用户的id

 

<?php
require 'redis.php';
$id = $_GET['id'];
//删除哈希键  user:$id
$redis->del('user:'.$id);//删除哈希键
//删除链表里面的id值
$redis->lrem('userid',$id);
header("location:index.php");
?>

login.php:用户登录的页面,

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh-CN">
<head>
<title>新建网页</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="description" content="" />
<meta name="keywords" content="" />
<script type="text/javascript">

</script>

<style type="text/css">
</style>
</head>
    <body>
    <h1>用户登录页面</h1>
        <form action="loginok.php" method="post"/>
        用户名:<input type="text" name="username"/><br/>
        密 码:<input type="text" name="password" /> <br/>
            <input type="submit" value="登录"/>
        </form>
    </body>
</html>


loginok.php处理用户登录的页面:

 

<?php
require 'redis.php';
$username = $_POST['username'];
$password = $_POST['password'];
//拼接字符串的键,根据该键获取用户的id
$id = $redis->get('username:'.$username);
if(!$id){
    die('该用户不存在');
}

//根据id构造哈希的键,根据哈希的键,或者密码字段
$passwd = $redis->hget('user:'.$id,'password');//返回哈希里面password键的值
if($password ==$passwd){
        //登录成功,把当前用户存储到session里面。
        /**/
        session_start();
        $_SESSION['username']=$username;
        $_SESSION['id']=$id;
        header("location:index.php");
        //echo 'ok';
        

}else{
        die('用户名或密码错误');

}

?>

接收到$username  和 $password  如何验证用户合法呢?

 

用户的数据是存储到哈希里面,哈希的键user:id

 

 

思路:根据用户输入的用户名,获取到用户的id,根据id从哈希里面获取用户的密码,该密码再和用户输入的密码进行比较。

 

在用户注册时,通过设置一个字符串,该字符串用于存储用户的id.

字符串的键:如何设计:’username:’.$username,$userid

 

addfield.php  添加好友页面,

<?php
require 'redis.php';
$id = $_GET['id'];
//取出当前登录的用户,
session_start();
$userid = $_SESSION['id'];//登录用户的id
//构建集合的键名,集合元素是好友的id
$redis->sadd('field:'.$userid,$id);//向集合里面添加好友
header("location:index.php");
?>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值