Redis 之仿微博demo
2024-08-23 03:03:15
一、用户注册登录
include './header.php';
include './function.php'; $username = p('username');
$password = p('password');
$password2 = p('password2'); if ($password != $password2) {
redirect("./login.php", "两次密码输入不一致", 3);
} if (!$username || !$password) {
redirect("./login.php", "请输入用户名或秘密", 3);
} $redis = connRedis();
/*
用户表设置
user:id:1:username
user:id:1:password user:username 1
*/
$id = $redis->incr("global:user");
$redis->set("user:id:$id:username", $username);
$redis->set("user:id:$id:password", $password);
$redis->set("user:username:$username", $id); //维护一个最新50个用户的表
$redis->lpush("newuser", $id);
$redis->ltrim("newuser", 0, 49); redirect("./login.php", "用户名:$username 注册成功", 3);
include './header.php';
include './function.php'; $username = p('username');
$password = p('password');
if (!$username || !$password) {
redirect("./login.php", "请输入用户名或秘密", 3);
} $redis = connRedis();
$id = $redis->get("user:username:$username");
$oldPassword = $redis->get("user:id:$id:password");
closeRedis($redis);
if ($password != $oldPassword) {
redirect("./login.php", "用户名或秘密不正确", 3);
}
//设置cookie
setcookie("id", $id);
setcookie("username", $username);
setcookie("password", $password);
redirect("./home.php", "登录成功", 3);
二、发表动态
include './header.php';
include './function.php'; $status = p('status');
if (empty($status)) {
redirect("./home.php", "请输入内容", 3);
}
/*
post表(发动态表)
post:id:1:uid
post:id:1:content
*/
$redis = connRedis();
$id = $redis->incr("global:post"); $redis->hMset("post:id:$id", array("uid" => $_COOKIE['id'], "content" => $status, "time" => date("Y-m-d H:i:s", time()), "username" => $_COOKIE['username'])); //最近50条发布的信息
$redis->lpush("newpost", $id);
$redis->ltrim("newpost", 0, 49); //获取我的粉丝,并把我的动态发给他
$fans = $redis->smembers("flowing:userid:{$_COOKIE['id']}");
$fans[] = $_COOKIE['id'];
foreach ($fans as $fansid) {
$redis->lpush("receivepost:$fansid", $id);
}
三、关注页
include './header.php';
include './function.php'; $uid = g("uid");
$f = g("f");
$redis = connRedis();
$u = $redis->get("user:id:$uid:username");
if (!$u) {
redirect("./home.php", "非法数据", 3);
}
if ($f) {
//关注
$redis->sAdd("flow:userid:{$_COOKIE['id']}", $uid);
$redis->sAdd("flowing:userid:$uid", $_COOKIE['id']);
$msg = "关注成功";
}else{
//取消
$redis->srem("flow:userid:{$_COOKIE['id']}", $uid);
$redis->srem("flowing:userid:$uid", $_COOKIE['id']);
$msg = "取消关注成功";
}
redirect("./profile.php?u=$u", $msg, 3);
四、热点页
include_once("./header.php");
include_once("./function.php");
if (!$_COOKIE['id']) {
redirect("./login.php", "请先登录", 3);
}
$redis = connRedis();
$data = $redis->sort("newuser", array("get" => "user:id:*:username", "limit" => array(0,1), "sort" => "desc"));
//获取最新发布的动态id
$newpost = $redis->lRange("newpost", 0, -1);
最新文章
- 【python常用函数1】
- 在大于32GB或64GB容量的SD卡上使用NOOB安装树莓派 - Using NOOB on SD cards larger than 32GB or 64GB for Raspberry Pi
- 嵌入式linux的学习之路[转]
- org.springframework.web.servlet.view.InternalResourceViewResolver
- 開始折腾cocos2d-x,使用批处理来创建项目
- PE基金的运作模式有哪些?
- http2.0 相对于 http1.1的优势
- 闲来无事写写-Huffman树的生成过程
- 从后台绑定数据到ligerui 的comboBox下拉框组件
- CRUD功能的JqGrid表格
- Java锁Synchronized对象锁和类锁区别
- 前端基于Canvas生成等值面的方案
- Codeforces Round #554 (Div. 2)自闭记
- python 在一个excel存多个sheet
- innerHTML、outerHTML、innerText、outerText的区别及兼容性问题
- 2.1博客系统 |基于form组件和Ajax实现注册登录
- JQ遇到$(‘.xxx’).attr(‘display’)一直返回undefined
- 2018年10月14日ICPC南京站参赛总结
- linux通过wget直接下载jdk
- vue播放video插件vue-video-player实现hls, rtmp播放全过程