thinkphp5項目--我的博客(四)

thinkphp5項目--我的博客(四)

項目地址

fry404006308/personalBlog: personalBlog
https://github.com/fry404006308/personalBlogphp

 

 1、表單數據顯示---文件、圖片、選擇列表

就是把數據庫的數據顯示到如上的edit表單上面來git

 

代碼

 1                         <div class="form-group">
 2                             <label for="group_id" class="col-sm-2 control-label no-padding-right">縮略圖</label>
 3                             <div class="col-sm-6">
 4                                  <input  id="pic" placeholder="" name="pic" style="display:inline;"  type="file">
 5                                  {if condition="$data['pic'] neq '' "}
 6                                      <img src="__IMG__{$data.pic}" height="50px" alt="">
 7                                  {else /}
 8                                      <span>暫無縮略圖</span>
 9                                  {/if}
10                             </div>
11                         </div> 
12 
13                         
14                         <div class="form-group">
15                             <label for="group_id" class="col-sm-2 control-label no-padding-right">所屬欄目</label>
16                             <div class="col-sm-6">
17                                 <select class="form-control" name="cateid"  required="" id="cateid">
18                                     <option value="">請選擇欄目</option>
19                                     {volist name="cateres" id="value"}
20                                     <option {if condition="$value['id'] eq $data['cateid']"} selected="selected" {/if} value="{$value.id}">{$value.catename}</option>
21                                     {/volist}
22                                 </select>
23                             </div>
24                             <p class="help-block col-sm-4 red">* 必填</p>
25                         </div> 
26                         
27     
28                         <div class="form-group">
29                             <label for="group_id" class="col-sm-2 control-label no-padding-right">是否推薦</label>
30                             <div class="col-sm-6">
31                                 <label>
32                                     <input {if condition="$data['state'] eq 1"} checked="checked" {/if} class="checkbox-slider colored-darkorange"  name="state" id="state" value="{$data.state}" type="checkbox">
33                                     <!-- checked="checked" -->
34                                     <span class="text"></span>
35                                 </label>
36                             </div>
37                         </div> 

 

 

2、用戶登陸

模型作數據(數據庫來的數據)處理,控制器作邏輯處理github

 

模型

 1 <?php
 2 namespace app\admin\model;
 3 
 4 use think\Model;
 5 use think\Db;
 6 class Login extends Model
 7 {
 8     //模型是處理數據的
 9     public function login($data){
10         $user=DB::name('admin')->where('username','=',$data['username'])->find();
11         //若是用戶存在咱們就進行處理,不然不進行處理
12         if($user){
13             //密碼正確和密碼錯誤兩種狀況
14             if($user['password']==md5($data['password'])){
15                 return 1;//信息正確
16             }else{
17                 return 0;//密碼錯誤
18             }
19 
20         }else{
21             return -1;//用戶不存在
22         }
23 
24     }
25 }

 

控制器

 1 <?php
 2 namespace app\admin\controller;
 3 
 4 use think\Controller;
 5 use app\admin\model\Login as LoginModel;
 6 
 7 class Login extends controller
 8 {
 9     public function index()
10     {
11         if(request()->isPost()){
12             $admin=new LoginModel();
13             $data=input('post.');
14             if($admin->login($data)==-1){
15                 $this->error('用戶不存在');
16             }elseif($admin->login($data)==0){
17                 $this->error('用戶密碼錯誤');
18             }elseif($admin->login($data)==1){
19                 $this->success('成功登錄','index/index');
20             }
21         }
22         return view('login');
23     }
24     
25 
26 }

 

 

3、session操做

在登陸成功的模型(model/Login.php)中添加sessionthinkphp

 1 <?php
 2 namespace app\admin\model;
 3 
 4 use think\Model;
 5 use think\Db;
 6 use think\Session;
 7 use think\Request;
 8 class Login extends Model
 9 {
10     //模型是處理數據的
11     public function login($data){
12         $user=DB::name('admin')->where('username','=',$data['username'])->find();
13         //若是用戶存在咱們就進行處理,不然不進行處理
14         if($user){
15             //密碼正確和密碼錯誤兩種狀況
16             if($user['password']==md5($data['password'])){
17                 //寫入session
18 Session::set('username',$user['username']); 19 Session::set('id',$user['id']); 20                 return 1;//信息正確
21             }else{
22                 return 0;//密碼錯誤
23             }
24 
25         }else{
26             return -1;//用戶不存在
27         }
28 
29     }
30 }

刪除session,退出登陸的時候刪除session數據庫

1     public function logout(){
2         // 清除session(當前做用域)
3         session(null);
4         return $this->success('退出成功!!','login/index');
5     }

照着thinkphp的操做手冊,session仍是比較好弄的session

thinkphp手冊session參照位置app

助手函數
系統也提供了助手函數session 完成相同的功能,例如:
// 初始化session session([ 'prefix' => 'module', 'type' => '', 'auto_start' => true, ]); // 賦值(當前做用域) session('name', 'thinkphp'); // 賦值think做用域 session('name', 'thinkphp', 'think'); // 判斷(當前做用域)是否賦值 session('?name'); // 取值(當前做用域) session('name'); // 取值think做用域 session('name', '', 'think'); // 刪除(當前做用域) session('name', null); // 清除session(當前做用域) session(null); // 清除think做用域 session(null, 'think');

部分對應的視圖,修改密碼那部分和session沒有關係dom

 1                             <!--Login Area Dropdown-->
 2                             <ul class="pull-right dropdown-menu dropdown-arrow dropdown-login-area">
 3                                 <li class="username"><a>David Stevenson</a></li>
 4                                 <li class="dropdown-footer">
 5                                     <a href="{:url('admin/logout')}">
 6                                             退出登陸
 7                                         </a>
 8                                 </li>
 9                                 <li class="dropdown-footer">
10                                     <a href="{:url('admin/edit',array('id'=>$Request.session.id))}">
11                                             修改密碼
12                                         </a>
13                                 </li>
14                             </ul>
15                             <!--/Login Area Dropdown-->

 

 

4、驗證碼

 截圖

 

 

thinkphp手冊參考 

1 驗證碼顯示
2 <div>{:captcha_img()}</div>
3 或者
4 <div><img src="{:captcha_src()}" alt="captcha" /></div>

 

 1 驗證碼配置
 2 而後在應用配置文件中添加驗證碼的配置參數
 3 'captcha' => [
 4 // 驗證碼字符集合
 5 'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
 6 // 驗證碼字體大小(px)
 7 'fontSize' => 25,
 8 // 是否畫混淆曲線
 9 'useCurve' => true,
10 // 驗證碼圖片高度
11 'imageH' => 30,
12 // 驗證碼圖片寬度
13 'imageW' => 100,
14 // 驗證碼位數
15 'length' => 5,
16 // 驗證成功後是否重置
17 'reset' => true
18 ],
19 而且確保開啓了URL路由。

 

配置文件

 1     //驗證碼配置
 2     'captcha' => [
 3         // 驗證碼字符集合
 4         'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
 5         // 驗證碼字體大小(px)
 6         'fontSize' => 20,
 7         // 是否畫混淆曲線
 8         'useCurve' => true,
 9         // 驗證碼圖片高度
10         'imageH' => 40,
11         // 驗證碼圖片寬度
12         'imageW' => 130,
13         // 驗證碼位數
14         'length' => 3,
15         // 驗證成功後是否重置
16         'reset' => true
17     ],

 

視圖

1                 <div class="loginbox-textbox">
2                     <input class="form-control" placeholder="CAPTCHA" name="code" style="width:90px; float:left; cursor:pointer;" type="text">
3                     <img style="float:left;" src="{:captcha_src()}" alt="captcha" onclick="this.src='{:captcha_src()}?'+Math.random(); " /> 
4                 </div> 

 

模型

模型中不能寫頁面跳轉,好比$this->error('驗證碼錯誤');ide

1         //驗證驗證碼
2         $captcha = new \think\captcha\Captcha();
3         if (!$captcha->check($data['code'])) {
4             return 4; 
5         }

 

控制器

1             $admin=new LoginModel();
2             $data=input('post.');
3             $num=$admin->login($data);
4             if($num==4){
5                 $this->error('驗證碼錯誤');
6             }

 

 

5、權限驗證

 

沒有登陸的用戶必須登陸了才能在網站上面進行操做函數

 1 <?php
 2 namespace app\admin\controller; 3 4 use think\Controller; 5 class Base extends Controller 6 { 7 //這個類裏面的其它方法在執行以前必須先執行這個方法 8 public function _initialize(){ 9 if(!session('username')){ 10 return $this->error('請先登陸系統!!','login/index'); 11  } 12  } 13 }
這個類裏面的其它方法在執行以前必須先執行這個方法:function _initialize()

 

讓其餘的全部控制器都繼承這個類就能夠實現須要的功能了

1 use app\admin\controller\Base;
2 
3 class Article extends Base
相關文章
相關標籤/搜索