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時間設置完畢
}
}
}