1:判断登录
public function main(){
//dump(session('admin_id'));die;
if(!session('admin_id')){
$this->success('未登录',U('index/login'),2);
}
$this->display();
}
public function login(){
//两个逻辑:展示、收集
if(!empty($_POST)){
//校验验证码
$vry = new \Think\Verify();
if($vry ->check($_POST['verify']))
{
//校验用户名密码
//先根据用户名查询一遍,查看是否存在此用户名,存在继续走,不存在返回个提示,就此截止。以此增加安全性跟效率
//然后获取密码,查看获取的密码md5后跟数据库的密码是否一致,
//如果一样则用户名密码验证通过,然后将用户名name跟id存到session里面,以后页面登录操作,可以直接判断有没有session['admin_name']或者session['adminid'],来判断用户是否登录,
$username = I('post.username','');
$firs=M('manager')->where("mg_name='$username'")->find();
//echo $firs['mg_pwd'];die;
// echo M('manager')->getLastsql();die;
//print_r($firs);die;
if(empty($firs)){
$this->error('用户不存在','/admin/home/empty/',3);
}
$passwd = I('post.pwd','');
if($passwd == $firs['mg_pwd'])
{
//接下来就是session持久化用户名跟id,然后页面跳转,也就是将提交的用户信息保存到admin_name,admin_id中去,此时session会自动生成session_id(),其他页面判断时也可以用有无这个值进行判断,id是会不断变化的
session('admin_name',$info['mg_name']);//将mg_name存到session中
session('admin_id',$info['id']);
$this->redirect('main');
}else{
echo "用户名密码错误";
}
}
else
{
echo "验证码错误:(";
}
}else{
$this->display();
}
$this->display();
}
public function logout(){
//退出系统,清楚session就行
session(null);
$this->redirect('login');
}
public function verify(){
$config = array(
'fontSize' => 18, // 验证码字体大小
'length' => 4, // 验证码位数
'useNoise' => true, // 关闭验证码杂点
);
$Verify = new \Think\Verify($config);
$Verify->entry();
}
增强安全性,tyteam.com/admin/Home/Saylist/add/直接打开这个地址如果没有session判断,则用户也能进行增删改差,如果加了session判断,则必须进行登录才可以操作。
1:新建sessionpdcontrollar控制器用来判断sessionid存不存在
<?php
namespace Home\Controller;
use Think\Controller;
class SessionpdController extends Controller {
function __construct (){//使用构造函数自动加载判断session
parent::__construct();
if(!session('admin_name'))
{
$this->error('<span style="font-size:36px; color:#ff0000;">没有登录奥亲:)!</span>',U('index/login'),2);
}else{
echo 'session _name='.session('admin_name');
}
}
}
2:将后台页面中顶部class ColumnController extends Controller 改为
class ColumnController extends SessionpdController
这样在页面加载时会自动判断session存不存在,进行判断用户的登录情况。
2:判断session过期时间
login方法里加入 $_SESSION['dl_time']=time()+480;//设置session过期时间
if($passwd == $firs['mg_pwd'])
{
//接下来就是session持久化用户名跟id,然后页面跳转,也就是将提交的用户信息保存到admin_name,admin_id中去,此时session会自动生成session_id(),其他页面判断时也可以用有无这个值进行判断,id是会不断变化的
session('admin_name',$firs['mg_name']);//将mg_name存到session中
session('admin_id',$firs['id']);
$_SESSION['dl_time']=time()+480;//设置session过期时间
$this->redirect('main');
}
sessionpdcontrollar控制器里面修改
<?php
namespace Home\Controller;
use Think\Controller;
class SessionpdController extends Controller {
function __construct (){
parent::__construct();
//判断用户登录情况开始
if(!session('admin_name'))
{
$this->error('<span style="font-size:36px; color:#ff0000;">没有登录奥亲:)!</span>',U('index/login'),2);
}else{
//判断用户登录情况完毕
//echo 'session _name='.session('admin_name');
//设置session过期时间
/* $_SESSION['dl_time']=time()+60;//设置session时间,当前时间加上一分钟}*/
if(isset($_SESSION['dl_time']))
{
if($_SESSION['dl_time']<time())
{
/* echo date('y-m-d h:i:s',time());
echo "<br>过期时间 =";
echo date('y-h-m h:i:s',$_SESSION['dl_time']);;*/
session(null);
$this->redirect('login');
}
}else
{
$_SESSION['dl_time']=time()+60;
/*echo $_SESSION['dl_time'];
echo "<br>";
echo date('y-h-m h:i:s',$_SESSION['dl_time']);*/
}
//session时间设置完毕
}
}
}