fry404006308/personalBlog: personalBlog
https://github.com/fry404006308/personalBlogphp
就是把數據庫的數據顯示到如上的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>
模型作數據(數據庫來的數據)處理,控制器作邏輯處理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 }
在登陸成功的模型(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-->
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 }
沒有登陸的用戶必須登陸了才能在網站上面進行操做函數
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