当前位置: 首页 > 编程日记 > 正文

php redis管理系统,php+redis实现小型的用户管理系统

1、redis.php ,用于连接redis数据库

//实例化

$redis = new Redis();

//连接服务器

$redis->connect("localhost");

//授权

$redis->auth("lamplijie");

2、add.php,用于添加用户

用户名:

密码:

年龄:

3、reg.php,用于注册用户

require("redis.php");

$username = $_POST['username'];

$password = md5($_POST['password']);

$age = $_POST['age'];

echo $uid = $redis->incr("userid");

$redis->hmset("user:".$uid,array("uid"=>$uid,"username"=>$username,"password"=>$password,"age"=>$age));

$redis->rpush("uid",$uid);

$redis->set("username:".$username,$uid);

header("location:list.php");

4、list.php,用户列表

注册

require("redis.php");

if(!emptyempty($_COOKIE['auth'])){

$id = $redis->get("auth:".$COOKIE['auth']);

$name = $redis->hget("user:".$id,"username");

?>

欢迎您,<?php echo $name?>,退出

}else{

?>

登陆

}

//用户总数

$count = $redis->lsize("uid");

//页大小

$page_size = 3;

//当前页码

$page_num = (!emptyempty($_GET['page']))?$_GET['page']: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);

/*

for($i=1;$i<=($redis->get("userid"));$i++) {

$data[] = $redis->hgetall("user:".$i);

}*/

foreach($ids as $v){

$data[] = $redis->hgetall("user:".$v);

}

//var_dump($data);

//$data = array_filter($data);

?>

uidusernameage操作
<?php echo $v['uid']?><?php echo $v['username']?><?php echo $v['age']?>

删除

编辑

加关注

上一页

下一页

首页

尾页

当前<?php echo $page_num ?>页

总共<?php echo $page_count ?>页

总共<?php echo $count ?>个用户

<?php $data = $redis->smembers("user:".$id.":following");?>

foreach($data as $v) {

$row = $redis->hgetall("user:".$v);

<?php echo $row['uid']?><?php echo $row['username']?><?php echo $row['age']?>

}

?>

$data = $redis->smembers("user:".$id.":followers");

foreach($data as $v) {

$row = $redis->hgetall("user:".$v);

?>

<?php echo $row['uid']?><?php echo $row['username']?><?php echo $row['age']?>

}

?>

5、del.php,用户删除

require("redis.php");

$uid = $_GET['id'];

$redis->del("user:".$uid);

$redis->lrem("uid",$uid);

header("localhost:list.php");

6、mod.php

require("redis.php");

$uid = $_GET['id'];

$data = $redis->hgetall("user:".$uid);

?>

用户名:

年龄:

7、doedit.php,信息更新

$uid = $_POST['uid'];

$username = $_POST['username'];

$age = $_POST['age'];

$a = $redis->hmset("user:".$uid,array("username"=>$username,"age"=>$age));

if($a) {

header("location:list.php");

}else {

header(location:mod.php?id=".$uid);

}

8、login.php,登录页面

require("redis.php");

$username = $_POST['username'];

$pass = $_POST['password'];

$id = $redis->get("username:".$username);

if(!emptyempty($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");

}

}

?>

用户名:

密码:

9、logout.php,退出

setcookie("auth","",time()-1);

header("location:list.php");

10、adfans.php,添加关注

$id = $_GET['id'];

$uid = $_GET['uid'];

require("redis.php");

$redis->sadd("user:".$uid.":following",$id);

$redis->sadd("user:".$id.":followers",$uid);

header("location:list.php");

当然,采用sdiff user:1:following user:2:following语句,用户1可以向用户2推荐关注(即用户1的关注与用户2的关注的差集)。

相关文章:

在虚拟机中 windows 2003 装.net framework 3.5 出现问题.

错误信息: [11/27/09,08:52:50] Microsoft .NET Framework 2.0a: [2] Error: Installation failed for component Microsoft .NET Framework 2.0a. MSI returned error code 1603[11/27/09,08:53:01] WapUI: [2] DepCheck indicates Microsoft .NET Framework 2.0a is not inst…

python——赋值与深浅拷贝

结合python变量存储的特性从内存的角度来谈一谈赋值和深浅拷贝~~~预备知识一——python的变量及其存储在详细的了解python中赋值、copy和deepcopy之前&#xff0c;我们还是要花一点时间来了解一下python内存中变量的存储情况。在高级语言中&#xff0c;变量是对内存及其地址的抽…

【计算机视觉】EmguCV学习笔记(4)分离颜色通道以及多通道图像混合

如果喜欢这里的内容&#xff0c;你能够给我最大的帮助就是转发&#xff0c;告诉你的朋友&#xff0c;鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn together.

oracle的存储过程调试,oracle 运行普通方式及调试debug方式存储过程性能区别

调试某一存储过程时&#xff0c;在plsql developer debug调试执行时&#xff0c;20多分钟都执行不完&#xff0c;后分析如下&#xff1a;1,查询调试会话运行存储过程的对应sqlselect sid,serial#,event,status,sql_id,prev_sql_id,action,module from v$session where suser12…

关于一个无限分类的多选,单选相关的控件

最近在一个项目中需要用到无限分类的平铺多选,单选这些功能,查了一些资料,结果大都是一些用IFrame这样的东西做的,虽然用起来直观,但本人更喜欢集成控件形式的,于是抽了一些时间做了一个.思路是利用控件JS不同的无限分类表,支持一页多控件,支持不同的无限分类表.效果图如下: 当…

ubuntu如何修改字符集编码

系统支持编码的修改如下&#xff1a;1. 使用如下命令查看系统支持的字符集cat /usr/share/i18n/SUPPORTED说明&#xff1a;查看系统支持的字符集&#xff0c;你需要注意的是支持字符集的格式&#xff0c;如对中文会有以下一些显示&#xff08;我的系统如此&#xff0c;我不知是…

【怎样写代码】小技巧 -- 关于引用类型的两种转换方式

如果喜欢这里的内容&#xff0c;你能够给我最大的帮助就是转发&#xff0c;告诉你的朋友&#xff0c;鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn together.

Oracle中的iot_type,oracle IOT表学习

IOT: Index-Organized Table索引组织表含义即将表结构整体放入索引中&#xff0c;且是按照主键进行排序的。创建&#xff1a;create table emp_iot(emp_no int,emp_name varchar2(100),dept_no int,salary number(10,2),constraint pk_empi primary key(emp_no, emp_name, dept…

如何查询并解决80端口 (转)

转自&#xff1a;http://www.cnblogs.com/chaofan/archive/2009/12/02/1615691.html 今天在使用apache的时候80端口被占用了&#xff0c;解决办法如下 在命令行里输入netstat -aon|findstr "80" 查看使用了80端口的tcp pid pid为1564 在任务管理器中将该进程结束掉即…

深证信息等三方拟联合开展大数据研究

昨日&#xff0c;深圳证券信息有限公司&#xff08;下称“深证信息”&#xff09;、泛欧交易所、北京新浪互联信息服务有限公司&#xff08;下称“新浪网”&#xff09;联合签署了合作备忘录&#xff0c;三方将基于各自优势在互联网大数据应用研究、股票指数开发、跨境指数产品…

【怎样写代码】小技巧 -- 关于方法中修饰形参的关键词

如果喜欢这里的内容&#xff0c;你能够给我最大的帮助就是转发&#xff0c;告诉你的朋友&#xff0c;鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn together.

oracle schedule stop,Oracle调度Schedule特性(第八部分)-Windows和Window Groups

哈哈&#xff0c;关于schedule的内容还没完&#xff0c;本章讲Windows&#xff0c;通常说的Windows是指盖首富的操作系统&#xff0c;而此处所说的Windows&#xff0c;是指SCHEDULER特性中的一个子项。在SCHEDULER中&#xff0c;WINDOW对应的是一个时间窗口的概念。我们知道普通…

CSS入门-五个简单,但有用的CSS属性

今天说的这5个CSS属性,你可能会很熟悉,但是你可能会很少会去使用.这个教程所讲得不是关于CSS3的属性,而是依旧使用CSS2属性来说明,这些属性广泛的被各种浏览器所支持:clip,min-height,white-space,cursor和display.所以不要错过这个教程,因为你会发现他们是多么的有用.1.CSS Cl…

借助线下渠道逆袭?小米的愿望恐成镜花水月!

小米5的发布&#xff0c;让久未有波澜的中国手机市场又泛起几点涟漪。 而在小米5发布的同时&#xff0c;小米销售方式的改变&#xff0c;也让人眼前一亮。小米&#xff0c;已经由最初的“反传统”&#xff0c;开始向“传统”靠拢了。 小米5发布会上&#xff0c;小米告诉大家&am…

【怎样写代码】函数式编程 -- Lambda表达式(一):引出

如果喜欢这里的内容&#xff0c;你能够给我最大的帮助就是转发&#xff0c;告诉你的朋友&#xff0c;鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn together.

oracle创建DBA角色命令,oracle常用DBA命令

1.查看用户拥有的数据库对象Sql代码select object_name from user_objects;2.查看约束信息Sql代码select constraint_name from user_constraints;3.查看用户所拥有的表Sql代码select table_name from user_tables;或Sql代码select *from tab;4.查看用户所拥有的视图Sql代码sel…

Ext JS Designer 1.0.5 发布

ExtJS官方Blog上发布了Ext JS Designer新版本&#xff0c;版本号为1.0.5&#xff0c;这个版本添加了不少新特性&#xff0c;如直接修改title&#xff0c;config参数搜索等等。虽然这个版本仍然不支持代码生成&#xff0c;不过另一则文章则让人感觉代码生成的日子也不远了。 此版…

【怎样写代码】函数式编程 -- Lambda表达式(二):C#常用委托

如果喜欢这里的内容&#xff0c;你能够给我最大的帮助就是转发&#xff0c;告诉你的朋友&#xff0c;鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn together.

前端设计(一)

前端设计&#xff08;一&#xff09;

oracle time格式化比较,ORACLE DATE和TIMESTAMP数据类型的比较(二) (转)

ORACLE DATE和TIMESTAMP数据类型的比较(二) (转)[more]原著作者&#xff1a;James KmannTIMESTAMP数据的格式化显示和DATE 数据一样。注意&#xff0c;to_char支持date和timestamp&#xff0c;但是trunc却不支持TIMESTAMP数据类型。这已经清楚表明了在当两个时间的差别极度重要…

模式实例之——外观实例

场景&#xff1a;银行柜员机取钱或存钱描述&#xff1a;从银行的柜员机取了100块钱&#xff08;一&#xff09;子系统/// <summary>/// 子系统抽象/// </summary>public interface IDo{void ShowMessage(string strMemo);}&#xff08;二&#xff09;各个子系统///…

cnpm install -g generator-gulp-webapp yo gulp-webapp test-gulp-webapp

2019独角兽企业重金招聘Python工程师标准>>> cnpm install -g generator-gulp-webapp yo gulp-webapp test-gulp-webapp 转载于:https://my.oschina.net/yizhichao/blog/1189216

【怎样写代码】函数式编程 -- Lambda表达式(三):LINQ初步

如果喜欢这里的内容&#xff0c;你能够给我最大的帮助就是转发&#xff0c;告诉你的朋友&#xff0c;鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn together.

oracle触发器初始化,oracle – 触发器无法初始化变量

我有触发审计,它存储了对任何EMP表行执行的操作.这个触发器工作正常,除了在某些情况下(很少发生,我无法确定确切的条件)它给了我Oracle错误&#xff1a;ORA-01400&#xff1a;无法插入NULL(“MY_SCHEMA”.“HIST_EMP”.“操作”)CREATE OR REPLACE TRIGGER HIST_EMP_AIUDAFTER …

翻页导航条页码计算方法

在开发搜索引擎等应用时&#xff0c;提供一个翻页导航条是必须的。我看过网上一些相关的代码&#xff0c;搞得很复杂。晕~~~ 其实其数学计算公式非常简单&#xff0c;本文提供两种最常用的算法。翻页式样式如下。每次显示10个页码&#xff0c;并提供"前十"、"后…

ArcGIS水文分析实战教程(9)雨量计算与流量统计

ArcGIS水文分析实战教程&#xff08;9&#xff09;雨量计算与流量统计 本章导读&#xff1a;降水是水文循环中重要的一环&#xff0c;降水包括雨、雪、雾、露、雹等&#xff0c;本章介绍的是降雨的环节。通过雨量站与插值的方式&#xff0c;实现雨量的空间分布就算&#xff0c;…

【怎样写代码】函数式编程 -- Lambda表达式(四):Lambda表达式与Expression树

如果喜欢这里的内容&#xff0c;你能够给我最大的帮助就是转发&#xff0c;告诉你的朋友&#xff0c;鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn together.

matlab svr 预测,SVR 多目标预测

程序代码&#xff1a;close all;clear;clc;format compact;load i_source.mat;% 提取数据[m,n] size(B);ts B(1:180,1);tsx B(1:180,2:n);figure;plot(ts,LineWidth,2);title(点信源波达方向随时间的变化规律,FontSize,12);xlabel(时间,FontSize,12);ylabel(波达方向,FontSi…

【建模必备】遗传算法的定义与生物学基础

如果喜欢这里的内容&#xff0c;你能够给我最大的帮助就是转发&#xff0c;告诉你的朋友&#xff0c;鼓励他们一起来学习。 If you like the content here, you can give me the greatest help is forwarding, tell your friends, encourage them to learn together.

转_前端开发技术概要

原文&#xff1a;http://www.2008sc.cn/blog/article.asp?id82 1、JavaScript 中的内存泄露模式http://www.ibm.com/developerworks/cn/web/wa-memleak/index.html----------------------2、javascript中的 闭包http://www.felixwoo.com/archives/247http://www.cn-cuckoo.com…