
thinkphp5.0
主要讲解tp5.0的使用
李 书 明
主要从事PHP相关课程、前端课程的培训
展开
-
THINKPHP扩展PHPEXCEL,PHP7.2以上版本无法导出Excel
THINKPHP扩展PHPEXCEL与PHP7.3高版本兼容问题框架:THINKPHP5,PHPEXCEL版本:1.81无法导出EXCEL原因为Shared/OLE.php第290行使用continue,PHP7不支持,修改为continue 2即可。...转载 2020-02-17 19:29:07 · 1015 阅读 · 0 评论 -
thinkphp5 第39课:表单令牌应用到 url 上
thinkphp5的表单令牌,我们一般应用到表单提交上。当然也可以应用到url上,生成随机的参数值,这样可以有效避免用户更改url,也可以防止别人盗取链接。因为我们的url是一次性的,第二次访问无效。<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> &l...原创 2019-12-26 22:05:37 · 356 阅读 · 0 评论 -
thinkphp5 第38课:正确使用表单令牌
使用表单令牌,一方面可以防止重复提交表单,二方面可以防止黑客CSRF。表单令牌是在服务器端随机生成的一串字符,保存在session中,并传递给前端页面,当前端数据提交时,一并携带令牌提交给服务器,服务器验证提交的令牌与session中的令牌是否一致,并同时销毁session中的令牌。所以每次请求时的令牌只能使用一次,下次如果使用同样的令牌就会失效,这即阻止了重复提交,也防止了黑客CSRF。...原创 2019-12-26 21:41:36 · 1236 阅读 · 1 评论 -
thinkphp5第37课:自定义路由
使用tp5如果采用默认的路由方式,你就会发现访问XX模块XX控制器XX方法的URL地址有多长,比如:http://serverName/index.php/module/controller/action/param/value/... 这样的模式称为:PATH_INFO模式开启自定义路由,需要配置config.php'url_route_on' => t...原创 2019-11-12 19:39:37 · 1270 阅读 · 0 评论 -
thinkphp5第36课:模板继承
模板继承模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局),并且其中 定义相关的区块(block),然后继承(extend)该基础模板的子模板中就可以对基础模板中定义的区块进行 重载。 因此,模板继承的优势其实是设计基础模板中的区块(block)和子模板中替换这些区块。 应用场景一般网站后台管理都有如下的布局方式网站的顶部、左侧属...原创 2019-11-12 09:02:15 · 765 阅读 · 0 评论 -
thinkphp5第35课:表单令牌
表单令牌的作用:避免表单的重复提交。当然还有另外一个原因,使用表单令牌可以防止黑客绕过表单,伪造数据进行提交。首先,在前端页面的表单中,添加:<input type="hidden" name="__token__" value="{$Request.token}" />比如下面的代码:<!DOCTYPE html><html lang="en">...原创 2019-11-11 20:57:25 · 782 阅读 · 0 评论 -
thinkphp5第34课:验证器
在往数据表中写入数据时,务必要验证数据的必要性和合法性,防止垃圾数据存入数据表中。这种验证一般都在前端实现,使用javascript和jquery,或者一些验证插件来实现。但是,我们一定要记录,前端的所有验证都是不可靠的。我们使用前验验证的目的主要是节省服务器压力和网络流量,提交用户的使用效果,仅此而已。普通的黑客就可以轻而易举地绕过前端验证,伪造数据直接访问访问器。所以,为了安全起见,服...原创 2019-11-11 20:41:54 · 350 阅读 · 0 评论 -
thinkphp5第33课:时间戳
设计数据表中,往往一些重要的数据都会记录添加的时间和最后修改的时间在设计模型时,可以开启时间戳<?phpnamespace app\index\model;use think\Model;//数据表student的模型类class Student extends Model{ //自定义表名 protected $table = "my_studen...原创 2019-11-11 20:07:39 · 403 阅读 · 0 评论 -
thinkphp5第32课:保存数据时过滤多余数据
当提交表单时,表单中往往有数据库不需要的数据下面我们来做一个案例对应的html代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <style>...原创 2019-11-10 11:26:35 · 995 阅读 · 0 评论 -
thinkphp5第31课:数据自动完成
数据自动完成数据自动完成指在不需要手动赋值的情况下对字段的值进行处理后写入数据库。系统支持 auto 、 insert 和 update 三个属性,可以分别在写入、新增和更新的时候进行字段的自动完成机制,auto属性自动完成包含新增和更新操作我们定义学生模型如下:<?phpnamespace app\index\model;use think\Model;class...原创 2019-11-10 10:36:03 · 638 阅读 · 0 评论 -
thinkphp5第30课:模型-修改器
修改器修改器的作用是可以在数据赋值的时候自动进行转换处理案例学生表有一个字段:password,这个字段值需要经过md5加密处理新增记录时,要把表单输入的密码如:123456转换成md5加密后的数据定义Student模型时,可以写一个修改器<?phpnamespace app\index\model;use think\Model;class Stude...原创 2019-11-10 10:07:36 · 454 阅读 · 0 评论 -
thinkphp5第29课:模型-获取器
1、获取器获取器的作用是在获取数据的字段值后自动进行处理有一个学生表,字段stustus为Int类型,1 =正常,0 =冻结;createtime表示创建时间,使用时间戳存储日期这样做的目的:整形的查询速度比字符串要高得多,能提高查询速度。项目中经常这样使用但是当在页面上显示学生信息时,不能显示0或者1,而是应用显示“正常”或“冻结”;创建时间显示正常的时间,如:2019-...原创 2019-11-10 09:06:07 · 595 阅读 · 0 评论 -
thinkphp5第28课:模型
模型:Model 用于实现数据表的所有操作前面讲过的Db类,同样能完成数据表的数据处理,写起来也更加的灵活,但因为没有考虑使用面向对象中的“封装”,会出现代码的冗余,可能对日后的维护带来麻烦废话少说,如何定义模型呢,要注意哪些问题呢1、模型也是一个类文件,必须放在模块目录的model目录下2、模型的代码结构:自定义的模型必须继承think\Model类<?php...原创 2019-11-09 16:53:19 · 352 阅读 · 0 评论 -
thinkphp5 :调试模式
运行tp5程序时,如果出现以下页面,说明程序出现了错误那么,程序到底错在哪里,我们需要知道错误的详细信息。此时,打开application目录下的config.php文件<?phpreturn [ // +---------------------------------------------------------------------- // | 应...原创 2019-09-14 16:06:25 · 745 阅读 · 0 评论 -
thinkphp5第22课:文件上传-使用表单上传
文件上传基本有两种:使用表单同步上传,使用js异步上传。第一种方式代码简单,但体验性较差,适合小文件的上传。本篇文章主要介绍使用thinkphp5实现表单上传文件有关详细资料可能参见tp5完全开发手册“杂项-上传”第一步:处理好前端的表单<!DOCTYPE html><html lang="en"><head> <met...原创 2019-09-19 09:14:47 · 1364 阅读 · 1 评论 -
thinkphp5 第21课+ 项目案例-源代码
前面几节课,我们学习了如何开发一个简单的学生管理系统,每个章节都配有代码和讲解为了大家更好的学习tp5,本节课提供了完整的源代码。点击以下链击可以下载:https://download.youkuaiyun.com/download/lsmxx/11782985...原创 2019-09-19 14:39:55 · 553 阅读 · 0 评论 -
thinkphp5 第23课:文件上传-上传学生照片,学号指定为文件名
在上传文件时,我们可以限定上传文件的大小,也可以限定上传文件的类型(如:只能上传jpg, gif格式),另外上传到服务器的文件名不要随机生成,由我们来指定。模板文件代码<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>添加学...原创 2019-09-20 11:37:20 · 1105 阅读 · 0 评论 -
thinkphp5 第24课:多表关联查询
有两个数据表,班级表,学生表,两个表之间有关联的字段:classid页面中显示学生列表上面的表格中,学生的一部分数据(学号,姓名,性别,年龄)来自于学生表,另一部分数据(班级)来自于班级表,这样的操作,涉及两个表的关联查询。关联查询主要有三种方式:内联接,左外联接,右外联接学生与班级之间的关联查询使用内联接,参照代码如下: //显示所有学生列表...原创 2019-09-24 08:39:18 · 1003 阅读 · 0 评论 -
thinkphp5 第25课:简单的异步调用(ajax)
在我的博客:thinkphp5 第14课:项目案例-学生列表模板设计https://blog.youkuaiyun.com/lsmxx/article/details/100987976曾经简单讲过异步调用,本章将前面的学生添加改为异步调用添加学生的模板文件:<!doctype html><html lang="en"><head> <m...原创 2019-09-24 09:38:48 · 971 阅读 · 0 评论 -
thinkphp5 第26课:读取正确上传文件中的中文内容(编码格式)
下面我们实现一个案例:上传一个文本文件,并且读取显示出来。首先准备一个记事本文件:原来编写代码,实现文件上传上传成功后,显示文件内容我们会发现,在浏览器中显示的中文出现乱码。这种情况 ,主要是因为记事本文件的编码格式是gbk,而我们写的程序代码的格式是utf-8格式,二者出现了不一致。处理字符串编码转换的有两个函数:iconv, mb_convert_e...原创 2019-09-26 12:15:44 · 1011 阅读 · 0 评论 -
thinkphp5 第27课:正确读取csv格式文件中的内容(编码格式转换)
在一些管理系统中,经常会遇到批量导入数据。下面我们演示如何批量导入学生数据。首先准备数据表:student准备一个excel文件,格式如下,其中第一行要与数据表中的字段对应好。因为php处理excel文件比较麻烦,所以要把它另存为csv格式的文件用记事本打开转换后的csv文件csv文件一个纯文本文件,编码格式一般为gbk下面开始写模板<...原创 2019-09-26 14:11:43 · 1223 阅读 · 0 评论 -
thinkphp5 第21课:项目案例-更新密码
更新管理员的登录密码效果如下:当我们点击导航中的管理员”修改密码“时,弹出一个模态框,这部分代码在nav.html中在前面的模板中,我们曾加包含过nav.html在此我们再来看一下nav.html代码<nav class="navbar navbar-inverse"> <div class="container-fluid"> ...原创 2019-09-19 07:53:11 · 769 阅读 · 0 评论 -
thinkphp5第20课:项目案例-删除学生
为了慎重起见,删除学生时系统需要提示:我们需要找到博客 :thinkphp5 第14课:项目案例-学生列表模板设计网址:https://blog.youkuaiyun.com/lsmxx/article/details/100987976有这样一行代码:<a href="javascript:delstudent('{$row.no}')" class="btn btn-dang...原创 2019-09-18 17:52:06 · 314 阅读 · 0 评论 -
thinkphp5 第8课:控制器如何获取表单数据
在上节课,我们使用bootstrap实现了表单,见下图:在表单中输入的信息,如何在控制器中获取呢?最简单的就是使用tp5自带的助手函数input()<?phpnamespace app\index\controller;use think\Controller;use think\Db;use think\exception\PDOException;/*...原创 2019-09-16 20:15:32 · 2366 阅读 · 2 评论 -
thinkphp5 第7课:引入bootstrap
在学习本章前,你必须先学习有关bootstrap框架的博客,详见以下两篇:https://blog.youkuaiyun.com/lsmxx/article/details/100538484https://blog.youkuaiyun.com/lsmxx/article/details/100655600在tp5中,如何引入bootstrap呢?在tp5框架的public目录下有一static目录,该目录...原创 2019-09-16 19:12:33 · 2590 阅读 · 0 评论 -
thinkphp5:模板编译后文件
当加载模板文件后,tp5会自动生成编译后的模板文件,它们存放在runtime目录下的temp目录中tp5有一个运行规则:如果模板文件没有改动过,就会加载temp目录中已经编译好的模板。除非你的模板文件改写了,才会生成新的编译好的模板文件。temp目录中的这些编译好的模板文件是可以删除的,删除后还会自动生成的。所以,当页面的运行结果不符合我们的预期时,可以尝试删除这些文件。...原创 2019-09-14 17:23:30 · 692 阅读 · 0 评论 -
thinkphp5第6课:操作数据库
ThinkPHP5内置了抽象数据库访问层,把不同的数据库操作封装起来,我们只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理。采用PDO方式,目前包含了Mysql、SqlServer、PgSQL、Sqlite等数据库的支持。如果应用需要使用数据库,必须配置数据库连接信息。打开applicaton目录下的database.ph...原创 2019-09-14 16:24:44 · 631 阅读 · 0 评论 -
thinkphp5 第5课:改写模板标签
模板文件可以包含普通标签和标签库标签。上节课,模板文件show.html中的代码:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body>&...原创 2019-09-14 11:38:05 · 601 阅读 · 0 评论 -
thinkphp5 第4课:模板中输出变量
在上节课,我们使用模板来显示的页面。控制器可以向模板传递数据,并显示在模板中。首先,我们要改造控制器index,在index方法中添加两行代码:<?phpnamespace app\index\controller;use think\Controller;/** * Class Index * index控制器继承核心的的控制器类Controller * Cont...原创 2019-09-14 10:13:23 · 1108 阅读 · 0 评论 -
thinkphp5 第3课:使用模板
在tp5中,application目录是应用目录,程序员可以在这个目录中写自己的代码。其中index目录表示模块名称,controller目录中所有文件都是控制器类,我们还可以创建两个目录:model、view,分别存放模型类和模板文件。接下来,我们开始学习如何使用模板。有关模板的介绍如下:每个模块的模板文件是独立的,ThinkPHP对模板文件进行目录划分,默认的模板文件定义规...原创 2019-09-14 09:41:50 · 718 阅读 · 0 评论 -
thinkphp5 第2课:使用tp5输出hello world
首次安装完tp5,运行http://127.0.0.1/tp5/public/index.php结果如下:如何输出hello world呢,我们该从何处入手呢?首先,我们打开public目录下的index.php文件,只有两行代码:// 定义应用目录define('APP_PATH', __DIR__ . '/../application/');// 加载框架引导文件r...原创 2019-09-12 17:27:57 · 1721 阅读 · 1 评论 -
thinkphp5第9课:页面跳转和重定向
我们把上节课控制器中的代码改写如下:<?phpnamespace app\index\controller;use think\Controller;use think\Db;use think\exception\PDOException;/** * Class Student */class Student extends Controller{ ...原创 2019-09-16 21:04:05 · 700 阅读 · 0 评论 -
thinkphp5 第10课:操作数据库-查询数据
在第6课,我们学习了使用Db类添加数据,接下来要学习使用Db类查询数据在Student控制器,添加一个all()方法,实现查询数据<?phpnamespace app\index\controller;use think\Controller;use think\Db;/** * Class Student */class Student extends C...原创 2019-09-17 08:52:07 · 673 阅读 · 0 评论 -
thinkphp5 第11课:项目案例-项目介绍
从第11课开始,我们开始完成一个简单的完整的项目,主要功能实现:管理员登录 显示学生列表 添加学生 编辑学生 删除学生 查询学生登录页面效果图:更新密码页面学生列表效果图添加学生页面效果图编辑学生页面效果图删除学生页面:...原创 2019-09-18 15:25:29 · 478 阅读 · 0 评论 -
thinkphp5第19课:项目案例-编辑学生的控制器部分代码
这部分代码在index模块的student控制器中<?phpnamespace app\index\controller;use app\common\controller\AdminBase;use think\Db;use think\exception\PDOException;/** * 学生控制器 * 主要实现学生的添加、修改、删除、显示 */cla...原创 2019-09-18 17:37:31 · 449 阅读 · 0 评论 -
thinkphp5第18课:项目案例-编辑学生模板实现
编辑学生的页面效果,基本同”添加学生“的页面,唯一不同的是,各个文本框中显示要编辑的学生的信息注意:学号不能编辑的参考代码如下:<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" ...原创 2019-09-18 17:25:38 · 458 阅读 · 0 评论 -
thinkphp5 第17课:项目案例-添加学生-控制器部分代码
在index模块的Student控制中,需要写两个方法显示添加页面 提交表单,添加记录参考代码如下:<?phpnamespace app\index\controller;use app\common\controller\AdminBase;use think\Db;use think\exception\PDOException;/** * 学生控制器...原创 2019-09-18 17:13:04 · 487 阅读 · 0 评论 -
thinkphp5 第16课:项目案例-添加学生模板实现
添加学生的页面效果如下:参考代码:<!doctype html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no,...原创 2019-09-18 17:09:41 · 439 阅读 · 0 评论 -
thinkphp5 第15课:项目案例-学生列表-控制器中的代码
在index模块,新建student控制器部分代码参考如下:<?phpnamespace app\index\controller;use app\common\controller\AdminBase;use think\Db;use think\exception\PDOException;/** * 学生控制器 * 主要实现学生的添加、修改、删除、显示...原创 2019-09-18 17:02:38 · 679 阅读 · 0 评论 -
thinkphp5 第14课:项目案例-学生列表模板设计
学生列表页的模板效果如下:上面的页面中,主要有:导航 表格 按钮 模态窗口 ajax提交参考代码如下:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" conte...原创 2019-09-18 16:45:49 · 657 阅读 · 0 评论