字段设计:
#设置登录帐号:
set user:1:account zhangsan
set user:2:account lisi
#设置用户名:
set user:1:name 张三
set user:2:name 李四
#设置email:
set user:1:email zhangsan@test.test
set user:2:email lisi@test.test
#设置密码:
set user:1:passwd 123456
set user:2:passwd 666666
#为了能根据唯一的帐号、唯一的邮箱找到具体的人(包括姓名密码等)再设置:
set zhangsan:uid 1
set lisi:uid 2
set zhangsan@test.test:uid 1
set lisi@test.test:uid 2
每注册一个用户将global:uid加1
incr global:uid
php代码示例:
login.php
<?php
//session存到redis。如果php.ini中没有配置,可以在php代码中配置:
ini_set('session.save_handler', 'redis');
ini_set('session.save_path', 'tcp://127.0.0.1:6379');
session_start();
//已经登录则跳转到首页
if($_SESSION['uid']){
echo 'hh';
header('Location:./index.php');
}
if(!$_POST['account'] || !$_POST['passwd']){
die('请完整输入帐号密码');
}
//连接redis
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
$uid = $redis->get($_POST['account'].':uid');
$passwd = $redis->get('user:'.$uid.':passwd');
if(!$uid || $passwd!=$_POST['passwd']){
die('帐号或密码错误');
}else{
echo '登录成功';
}
$_SESSION['uid']=$uid;
注意:可以在php.ini中配置session存放redis
session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"
register.php
<?php
if(!$_POST['account'] || !$_POST['passwd'] || !$_POST['passwd2']){
die('请完整输入注册信息');
}
if($_POST['passwd'] != $_POST['passwd2']){
die('两次密码输入不一致');
}
if(strlen($_POST['passwd'])<6){
die('密码不能小于6位');
}
//连接redis数据库
$redis = new Redis();
$redis->connect('127.0.0.1',6379);
//查看用户名是否已被注册
if($redis->get($_POST['account'].':uid')){
die('该帐号已被注册');
}
//每次注册一个用户将global:uid增加1
$uid = $redis->incr('global:uid');
$redis->set('user:'.$uid.':account',$_POST['account']);
$redis->set('user:'.$uid.':passwd',$_POST['passwd']);
$redis->set($_POST['account'].':uid',$uid);
~
注意:由于cookie存在本地,所以要加点盐(salt)。退出的时候要记得将cookie消除,还有redis中存的session也释放掉。