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