thinkphp5项目--个人博客(四)
thinkphp5项目--个人博客(四)
项目地址
fry404006308/personalBlog: personalBlog
https://github.com/fry404006308/personalBlog
一、表单数据显示---文件、图片、选择列表

就是把数据库的数据显示到如上的edit表单上面来
代码
<div class="form-group">
<label for="group_id" class="col-sm-2 control-label no-padding-right">缩略图</label>
<div class="col-sm-6">
<input id="pic" placeholder="" name="pic" style="display:inline;" type="file">
{if condition="$data['pic'] neq '' "}
<img src="__IMG__{$data.pic}" height="50px" alt="">
{else /}
<span>暂无缩略图</span>
{/if}
</div>
</div> <div class="form-group">
<label for="group_id" class="col-sm-2 control-label no-padding-right">所属栏目</label>
<div class="col-sm-6">
<select class="form-control" name="cateid" required="" id="cateid">
<option value="">请选择栏目</option>
{volist name="cateres" id="value"}
<option {if condition="$value['id'] eq $data['cateid']"} selected="selected" {/if} value="{$value.id}">{$value.catename}</option>
{/volist}
</select>
</div>
<p class="help-block col-sm-4 red">* 必填</p>
</div> <div class="form-group">
<label for="group_id" class="col-sm-2 control-label no-padding-right">是否推荐</label>
<div class="col-sm-6">
<label>
<input {if condition="$data['state'] eq 1"} checked="checked" {/if} class="checkbox-slider colored-darkorange" name="state" id="state" value="{$data.state}" type="checkbox">
<!-- checked="checked" -->
<span class="text"></span>
</label>
</div>
</div>
二、用户登录
模型做数据(数据库来的数据)处理,控制器做逻辑处理

模型
<?php
namespace app\admin\model; use think\Model;
use think\Db;
class Login extends Model
{
//模型是处理数据的
public function login($data){
$user=DB::name('admin')->where('username','=',$data['username'])->find();
//如果用户存在我们就进行处理,否则不进行处理
if($user){
//密码正确和密码错误两种情况
if($user['password']==md5($data['password'])){
return 1;//信息正确
}else{
return 0;//密码错误
} }else{
return -1;//用户不存在
} }
}
控制器
<?php
namespace app\admin\controller; use think\Controller;
use app\admin\model\Login as LoginModel; class Login extends controller
{
public function index()
{
if(request()->isPost()){
$admin=new LoginModel();
$data=input('post.');
if($admin->login($data)==-1){
$this->error('用户不存在');
}elseif($admin->login($data)==0){
$this->error('用户密码错误');
}elseif($admin->login($data)==1){
$this->success('成功登陆','index/index');
}
}
return view('login');
} }
三、session操作
在登录成功的模型(model/Login.php)中添加session
<?php
namespace app\admin\model; use think\Model;
use think\Db;
use think\Session;
use think\Request;
class Login extends Model
{
//模型是处理数据的
public function login($data){
$user=DB::name('admin')->where('username','=',$data['username'])->find();
//如果用户存在我们就进行处理,否则不进行处理
if($user){
//密码正确和密码错误两种情况
if($user['password']==md5($data['password'])){
//写入session
18 Session::set('username',$user['username']);
19 Session::set('id',$user['id']);
return 1;//信息正确
}else{
return 0;//密码错误
} }else{
return -1;//用户不存在
} }
}
删除session,退出登录的时候删除session
public function logout(){
// 清除session(当前作用域)
session(null);
return $this->success('退出成功!!','login/index');
}
照着thinkphp的操作手册,session还是比较好弄的
thinkphp手册session参照位置
助手函数
系统也提供了助手函数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没有关系
<!--Login Area Dropdown-->
<ul class="pull-right dropdown-menu dropdown-arrow dropdown-login-area">
<li class="username"><a>David Stevenson</a></li>
<li class="dropdown-footer">
<a href="{:url('admin/logout')}">
退出登录
</a>
</li>
<li class="dropdown-footer">
<a href="{:url('admin/edit',array('id'=>$Request.session.id))}">
修改密码
</a>
</li>
</ul>
<!--/Login Area Dropdown-->
四、验证码
截图

thinkphp手册参考
验证码显示
<div>{:captcha_img()}</div>
或者
<div><img src="{:captcha_src()}" alt="captcha" /></div>
验证码配置
然后在应用配置文件中添加验证码的配置参数
'captcha' => [
// 验证码字符集合
'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
// 验证码字体大小(px)
'fontSize' => 25,
// 是否画混淆曲线
'useCurve' => true,
// 验证码图片高度
'imageH' => 30,
// 验证码图片宽度
'imageW' => 100,
// 验证码位数
'length' => 5,
// 验证成功后是否重置
'reset' => true
],
并且确保开启了URL路由。
配置文件
//验证码配置
'captcha' => [
// 验证码字符集合
'codeSet' => '2345678abcdefhijkmnpqrstuvwxyzABCDEFGHJKLMNPQRTUVWXY',
// 验证码字体大小(px)
'fontSize' => 20,
// 是否画混淆曲线
'useCurve' => true,
// 验证码图片高度
'imageH' => 40,
// 验证码图片宽度
'imageW' => 130,
// 验证码位数
'length' => 3,
// 验证成功后是否重置
'reset' => true
],
视图
<div class="loginbox-textbox">
<input class="form-control" placeholder="CAPTCHA" name="code" style="width:90px; float:left; cursor:pointer;" type="text">
<img style="float:left;" src="{:captcha_src()}" alt="captcha" onclick="this.src='{:captcha_src()}?'+Math.random(); " />
</div>
模型
模型中不能写页面跳转,比如$this->error('验证码错误');
//验证验证码
$captcha = new \think\captcha\Captcha();
if (!$captcha->check($data['code'])) {
return 4;
}
控制器
$admin=new LoginModel();
$data=input('post.');
$num=$admin->login($data);
if($num==4){
$this->error('验证码错误');
}
五、权限验证

没有登录的用户必须登录了才能在网站上面进行操作
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
thinkphp5项目--个人博客(四)的更多相关文章
- thinkphp5项目--个人博客(七)
thinkphp5项目--个人博客(七) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...
- thinkphp5项目--个人博客(五)
thinkphp5项目--个人博客(五) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...
- thinkphp5项目--个人博客(三)
thinkphp5项目--个人博客(三) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...
- thinkphp5项目--个人博客(一)
thinkphp5项目--个人博客(一) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...
- thinkphp5项目--个人博客(二)
thinkphp5项目--个人博客(二) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...
- thinkphp5项目--个人博客(八)
thinkphp5项目--个人博客(八) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...
- thinkphp5项目--个人博客(六)
thinkphp5项目--个人博客(六) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...
- 学习SpringBoot,整合全网各种优秀资源,SpringBoot基础,中间件,优质项目,博客资源等,仅供个人学习SpringBoot使用
学习SpringBoot,整合全网各种优秀资源,SpringBoot基础,中间件,优质项目,博客资源等,仅供个人学习SpringBoot使用 一.SpringBoot系列教程 二.SpringBoot ...
- 2015-2016-2 《Java程序设计》项目小组博客
2015-2016-2 <Java程序设计>项目小组博客 1451 完+美 java项目 守望先疯 JavaGroup 07_10_20_22 FromBottomToTop L.G.Su ...
随机推荐
- http响应的封装
响应的封装: 资源的初始化 分析请求响应信息,根据状态响应码,发送不同的状态码 浏览器根据状态信息,做出不同的执行 构建正文,也就是根据浏览器客服端的请求发送响应信息: 发送响应:code 是状态码, ...
- angular-HTML DOM
ng-disabled用法 <div ng-app="" ng-init="mySwitch=true"> <p> <button ...
- BestCoder Round #52 (div.2) HDU 5418 Victor and World (DP+状态压缩)
[题目链接]:pid=5418">click here~~ [题目大意]: 问题描写叙述 经过多年的努力,Victor最终考到了飞行驾照. 为了庆祝这件事,他决定给自己买一架飞机然后环 ...
- 实战:percona-xtrabackup 2.1.9 for mysql 5.6.19
----1.编译安装percona-xtrabackup yum install cmake gcc gcc-c++ libaio libaio-devel automake autoconf bzr ...
- UVA 1329 Corporative Network【并查集】
题目链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_proble ...
- POJ 3664 Election Time 题解
这道题网上非常多人都会说easy,水题之类的话,只是我看了下说这种话的人的程序,能够说他们的程序都不及格! 为什么呢?由于他们的程序都是使用简单的二次排序水过(大概你能搜索到的多是这种程序).那样自然 ...
- Centos yum 安装lamp PHP5.4版本号
centos 6.5 1.yum安装和源码编译在使用的时候没啥差别.可是安装的过程就大相径庭了,yum仅仅须要3个命令就能够完毕,源码须要13个包,还得加压编译.步骤非常麻烦,并且当做有时候会出错,源 ...
- poj3249 Test for job 【图的DAG dp】
#include <cstdio> #include <cstdlib> #include <iostream> #include <algorithm> ...
- 使用Powershell 的获取别的机器WMI类失败解决方法!
有些时候须要连接多台机器去获取他们的类,可是有些时候我们发现计算机无法连接,这个时候怎么办呢? 请改动组策略中下面配置: 能够使用Gpmc.msc 进行以后.本地计算机策略--计算机配置--管理模板- ...
- 【翻译自mos文章】怎么正确的计算一个ip地址的subnet id?
怎么正确的计算一个ip地址的subnet id? 来源于: How to calculate the correct subnet for an interface (文档 ID 1059759.1) ...