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 ...
随机推荐
- .NET开源项目一览
- 【原创】PHP扩展开发进阶
PHP扩展开发进阶 作者:wf (360电商技术) 在第一期PHP扩展开发入门中,简单的介绍了PHP的总体架构和执行机制,并具体说明了怎样开发和编译一个主要的PHP扩展,最后在PHP 5.3的环境下 ...
- HDU 4418 高斯消元法求概率DP
把两种状态化成2*n-2的一条线上的一种状态即可.很容易想到. 高斯列主元法,不知为什么WA.要上课了,不玩了...逃了一次课呢.. #include <iostream> #includ ...
- CURL库的宏定义列表
列表CURL库一共同拥有17个函数 curl_close:关闭CURL会话 curl_copy_handle:复制一个CURL会话句柄,同一时候3复制其全部參数 curl_errno:返回最后一个错误 ...
- 【iOS】UICollectionView自己定义Layout之蜂窝布局
网上的UICollectionView的Layout布局,其cell的形状多为矩形和圆形. 本篇博文将正六边形作为cell的基本形状,为您展现独特的蜂窝布局效果及实现源代码. 帮助您让自己的App脱颖 ...
- lua简单类的实现
原文地址:http://blog.csdn.net/qqmcy/article/details/37725177 类实现: MyClass = class("MyClass") - ...
- sqlplus登录提示:ORA-12162:TNS:net service name is incorrectly specified错误
[root@localhost ~]# su - oracle [oracle@localhost ~]$ sqlplus '/as sysdba' SQL*Plus: Release 11.2.0. ...
- Android学习之——自己搭建Http框架(2)——框架扩展
· 本文主要解说的是Json指定转化成对象返回.下载进度更新,随时取消Request请求 一.Json指定转化成对象返回 上篇文章主要讲基础的框架搭建起来了,这次须要做一些些的扩展,这里Json转化用 ...
- 如何让Java写的程序,脱离Eclipse在别人的电脑上运行?
Java程序运行,离不开JRE. 将JRE文件夹拷贝出来, 将编写程序的bin文件夹拷贝出来, 再编写一个bat文件. start jre\bin\javaw.exe -cp .\bin\ -Djav ...
- Oracle RAC --安装图解
规划:所用linux系统以虚拟化方式安装在esx上,配置有内网的yum源,各分配有16G存储,下面为简单拓扑图 一,下载软件1,地址:http://www.oracle.com/technology/ ...