Méthode PHP+redis pour implémenter les fonctions d'enregistrement, de suppression, d'édition, de pagination, de connexion, de suivi et autres

墨辰丷
Libérer: 2023-03-27 22:32:02
original
2042 Les gens l'ont consulté

Cet article présente principalement php+redis pour implémenter des fonctions telles que l'enregistrement, la suppression, l'édition, la pagination, la connexion et le suivi. Il analyse l'enregistrement, la suppression, l'édition, la pagination et la connexion couramment utilisés dans le développement de projets php+redis dans. sous forme d'exemples. Pour des conseils d'implémentation liés à la fonction d'attention, les amis qui en ont besoin peuvent se référer à

Cet article décrit comment php+redis implémente des fonctions telles que l'enregistrement, la suppression, l'édition, la pagination, la connexion et le suivi. . Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Interface principale

Connectez redis

redis.php

<?php
  //实例化
  $redis = new Redis();
  //连接服务器
  $a=$redis->connect("localhost",6379);
  //var_dump($a);
  //授权
  $redis->auth("107lab");
Copier après la connexion

Interface d'inscription

add.php

<form action="reg.php" method="post">
  用户名:<input type="text" name="username"><br>
  密码:<input type="password" name="password"><br>
  年龄:<input type="text" name="age"><br>
  <input type="submit" value="注册">
  <input type="reset" value="重填">
</form>
Copier après la connexion

Mise en œuvre de l'enregistrement

reg.php

<?php
  require("redis.php");
  $username = $_POST[&#39;username&#39;];
  $password = md5($_POST[&#39;password&#39;]);
  $age = $_POST[&#39;age&#39;];
  //echo $username.$password.$age;
  $uid = $redis->incr("userid");//设置自增id,相当于主键
  $redis->hMset("user:".$uid,array("uid"=>$uid,"username"=>$username,"password"=>$password,"age"=>$age));//用hash类型存储用户比较方便
  //将用户id存入一个链表中,便于统计数据
  $redis->rpush("uid",$uid);
  //将用id存入以用户名为键的字符类型中,便于查看用户是否存在。
  $redis->set("username:".$username,$uid);
  header(&#39;location:list.php&#39;);
Copier après la connexion

Page de liste

list.php

<a href="add.php" rel="external nofollow" >注册</a>
<?php
  require("redis.php");
  if(!empty($_COOKIE[&#39;auth&#39;])){
    $id = $redis->get("auth:".$_COOKIE[&#39;auth&#39;]);
    $name = $redis->hget("user:".$id,"username");
?>
    欢迎您:<?php echo $name;?> <a href="logout.php" rel="external nofollow" >退出</a>
  <?php } else { ?>
  <a href="login.php" rel="external nofollow" >登录</a>
  <?php } ?>
<?php
  require("redis.php");
  //用户总数
  $count = $redis->lsize("uid");//获取链表的长度
  //echo $count;
  //页大小
  $page_size = 3;
  //当前页码
  $page_num=(!empty($_GET[&#39;page&#39;]))?$_GET[&#39;page&#39;]:1;
  //页总数
  $page_count = ceil($count/$page_size);
  $ids = $redis->lrange("uid",($page_num-1)*$page_size,(($page_num-1)*$page_size+$page_size-1));
  //var_dump($ids);
  foreach($ids as $v){
    $data[]=$redis->hgetall("user:".$v);
  }
  /*
  //以下为最初想到的分页处理,放入一个数组中,根据uid的最大值来当总个数,但是删除个别用户以后,uid不会变小,所以建议用链表,因为他有个lsize函数可以求出链表长度
  //根据userid获取所有用户
  for($i=1;$i<=($redis->get("userid"));$i++){
    $data[]=$redis->hgetall("user:".$i);
  }
  //过滤空值
  $data = array_filter($data);
  //var_dump($data);
  */
?>
<table border=1>
  <tr>
    <th>uid</th>
    <th>username</th>
    <th>age</th>
    <th>操作</th>
  </tr>
  <?php foreach($data as $v){ ?>
  <tr>
    <td><?php echo $v[&#39;uid&#39;]?></td>
    <td><?php echo $v[&#39;username&#39;]?></td>
    <td><?php echo $v[&#39;age&#39;]?></td>
    <td>
      <a href="del.php?id=<?php echo $v[&#39;uid&#39;];?>" rel="external nofollow" >删除</a>
      <a href="mod.php?id=<?php echo $v[&#39;uid&#39;];?>" rel="external nofollow" >编辑</a>
      <?php if(!empty($_COOKIE[&#39;auth&#39;]) && $id != $v[&#39;uid&#39;]){ ?>
      <a href="addfans.php?id=<?php echo $v[&#39;uid&#39;];?>&uid=<?php echo $id;?>" rel="external nofollow" >加关注</a>
      <?php } ?>
    </td>
  </tr>
  <?php } ?>
  <tr>
    <td colspan="4">
      <?php if(($page_num-1)>=1){ ?>
      <a href="?page=<?php echo ($page_num-1);?>" rel="external nofollow" >上一页</a>
      <?php } ?>
      <?php if(($page_num+1)<=$page_count){ ?>
      <a href="?page=<?php echo ($page_num+1);?>" rel="external nofollow" >下一页</a>
      <?php } ?>
      <a href="?page=1" rel="external nofollow" >首页</a>
      <a href="?page=<?php echo ($page_count);?>" rel="external nofollow" >尾页</a>
      当前<?php echo $page_num;?>页
      总共<?php echo $page_count;?>页
      总共<?php echo $count;?>个用户
    </td>
  </tr>
</table>
<!--关注功能,建议用集合实现,因为集合元素唯一,并且可以容易求出两个用户粉丝之间交集与差集,进而进行好友推荐功能-->
<table border=1>
  <caption>我关注了谁</caption>
  <?php
    $data = $redis->smembers("user:".$id.":following");
    foreach($data as $v){
      $row = $redis->hgetall("user:".$v);
  ?>
  <tr>
    <td><?php echo $row[&#39;uid&#39;];?></td>
    <td><?php echo $row[&#39;username&#39;];?></td>
    <td><?php echo $row[&#39;age&#39;];?></td>
  </tr>
  <?php } ?>
<table>
<table border=1>
  <caption>我的粉丝</caption>
  <?php
    $data = $redis->smembers("user:".$id.":followers");
    foreach($data as $v){
      $row = $redis->hgetall("user:".$v);
  ?>
  <tr>
    <td><?php echo $row[&#39;uid&#39;];?></td>
    <td><?php echo $row[&#39;username&#39;];?></td>
    <td><?php echo $row[&#39;age&#39;];?></td>
  </tr>
  <?php } ?>
<table>
Copier après la connexion

Quitter

logout.php

<?php
  setcookie("auth","",time()-1);
  header("location:list.php");
Copier après la connexion

Connexion

login.php

<?php
  require("redis.php");
  $username = $_POST[&#39;username&#39;];
  $pass = $_POST[&#39;password&#39;];
  //根据注册时存储的以用户名为键的字符类型中查找用户id
  $id = $redis->get("username:".$username);
  if(!empty($id)){
    $password = $redis->hget("user:".$id,"password");
    if(md5($pass) == $password){
      $auth = md5(time().$username.rand());
      $redis->set("auth:".$auth,$id);
      setcookie("auth",$auth,time()+86400);
      header("location:list.php");
    }
  }
?>
<form action="" method="post">
  用户名:<input type="text" name="username"/><br>
  密码:<input type="password" name="password"><br>
  <input type="submit" value="登录"/>
</form>
Copier après la connexion

Supprimer

del.php

<?php
  require("redis.php");
  $uid = $_GET[&#39;id&#39;];
  //echo $uid;
  $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");
Copier après la connexion

Interface d'édition

mod.php

<?php
  require("redis.php");
  $uid = $_GET[&#39;id&#39;];
  $data=$redis->hgetall("user:".$uid);
?>
<form action="doedit.php" method="post">
  <input type="hidden" value="<?php echo $data[&#39;uid&#39;];?>" name="uid">
  用户名:<input type="text" name="username" value="<?php echo $data[&#39;username&#39;];?>"><br>
  年龄:<input type="text" name="age" value="<?php echo $data[&#39;age&#39;];?>"><br>
  <input type="submit" value="提交">
  <input type="reset" value="重填">
</form>
Copier après la connexion

Fonction d'édition

doedit.php

<?php
  require(&#39;redis.php&#39;);
  $uid = $_POST[&#39;uid&#39;];
  $username = $_POST[&#39;username&#39;];
  $age = $_POST[&#39;age&#39;];
  $a=$redis->hmset("user:".$uid,array("username"=>$username,"age"=>$age));
  if($a){
    header("location:list.php");
  }else{
    header("location:mod.php?id=".$uid);
  }
Copier après la connexion

Ajouter un suivi

addfans.php

<?php
//关注功能,建议用集合实现,因为集合元素唯一,并且可以容易求出两个用户粉丝之间交集与差集,进而进行好友推荐功能
  $id = $_GET[&#39;id&#39;];
  $uid = $_GET[&#39;uid&#39;];
  require("redis.php");
  $redis->sadd("user:".$uid.":following",$id);
  $redis->sadd("user:".$id.":followers",$uid);
  header("location:list.php");
Copier après la connexion

Ce qui précède est l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.


Recommandations associées :

Explication détaillée de la messagerie d'application de Redis en php

Explication détaillée de la méthode de publication PHP Weibo basée sur la file d'attente de messages Redis

Explication détaillée de la méthode de stockage/dépôt de PHPSession dans redis

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal