thinkphp5

ThinkPHP5自动生成缩略图函数

我的梦境 提交于 2019-11-29 00:00:51
函数放在common.php公共文件即可 function thumb ($src = '', $width = 500 , $height = 500 , $type = 1 , $replace = false) { $src = './'.$src; if (is_file($src) && file_exists($src)) { $ext = pathinfo($src, PATHINFO_EXTENSION); $name = basename($src, '.'.$ext); $dir = dirname($src); if (in_array($ext, array ('gif','jpg','jpeg','bmp','png'))) { $name = $name.'_thumb_'.$width.'_'.$height.'.'.$ext; $file = $dir.'/'.$name; if (!file_exists($file) || $replace == TRUE ) { $image = \think\Image::open($src); $image->thumb($width, $height, $type); $image->save($file); } $file=str_replace("\\","/",$file); $file = '/'

ThinkPHP5实用的数据库操作方法【持续更新】

血红的双手。 提交于 2019-11-28 22:45:06
1、update方法总结   /** * 设置记录的某个字段值 * 支持使用数据库字段和方法 * @access public * @param string|array $field 字段名 * @param mixed $value 字段值 * @return integer */ function setField($field, $value = ''){}; //设置某个字段的值,适用场景:适用于用户积分清零、余额清零等类似操作 Db::name('table')->where('id',1)->setField('field',0); /** * 字段值(延迟)增长 * @access public * @param string $field 字段名 * @param integer $step 增长值 * @param integer $lazyTime 延时时间(s) * @return integer|true * @throws Exception */ public function setInc($field, $step = 1, $lazyTime = 0){}; //自增某个字段的值,参数2不传时默认为自增1,适用场景:适用于用户积分增加、余额增加等类似操作,需要延时更新则传入第三个参数(单位秒), Db::name('table')->where(

thinkphp5远程代码执行漏洞分析(二)

℡╲_俬逩灬. 提交于 2019-11-28 19:01:23
payload url => http://127.0.0.1/thinkphp_5.0.10_full/public/index.php?s=index/index/index post => s=whoami&method=&filter[]=system&_method=__construct 版本:5.0.8~5.0.12 漏洞解析 开始前为了方便大家理解,先大致描述一下被触发的过程。原因在于Request.php文件中reqeust类的属性可控导致自定义filter过滤器可控,而filter又用于过滤用户传入的危害变量,可控的变量被传入了可控的filter中导致漏洞的形成。 从漏洞形成的地方反向跟踪payload的传入过程研究漏洞形成的原因: 首先在request.php的1060行下断点 分析堆栈 可以发现有危害的filter在request.php的1000行的getFilter方法中形成 跟踪进getFilter()方法,过滤器直接由request类的属性filter赋值了 那么$this->filter的属性是什么时候被我们改变的呢,继续在堆栈间查看变量的改变,可以发现属性在App::run()方法调用后和$request->param()方法调用前就已经被改变了。 继续在这两个方法之间一步步的调试,查看filter属性在何处被修改,最后定位到了Route

thinkphp5远程代码执行漏洞分析(一)

我只是一个虾纸丫 提交于 2019-11-28 19:01:23
payload 测试版本thinkphp5.1beta url => http://127.0.0.1/thinkphp5.1beta/public/index.php?s=index/\think\Container/invokefunction&function=call_user_func&vars[0]=phpinfo&vars[1]=1 漏洞分析 查阅了网上的分析资料,直接定位到漏洞形成的直接代码Module.php 第124行: 传入的参数在124行生成了think\container类中的invokefunciton方法,该方法会生成一个函数并调用。 而传入参数$vars为我们get中传入的内容。反向跟踪$call和$vars变量 在108行以$instance实例作为元素。继续反向查看,可以发现在第93行被实例化。 深入查看$this->app->controller。thinkphp5.1beta\thinkphp\library\think\App.php第463行 当检测到路由信息中有\后调用$this->request->module()方法,该方法会先判断该类是否存在,存在的话生成该类实例 其中$controller从参数中提取出来的。 分析堆栈,url.php第26行 可以看到

安装ThinkPHP

ε祈祈猫儿з 提交于 2019-11-28 10:27:55
安装ThinkPHP --------------来源:ThinkPHP5.0完全开发手册 ThinkPHP5的环境要求如下: • PHP >= 5.4.0 •PDO PHP Extension •MBstring PHP Extension •CURL PHP Extension 严格来说,ThinkPHP无需安装过程,这里所说的安装其实就是把ThinkPHP框架放入WEB运行环境(前提是你的WEB运行环境已经OK),可以通过下面几种方式获取和安装ThinkPHP。 一、官网下载安装 获取ThinkPHP的方式很多,官方网站(http://thinkphp.cn)提供了稳定版本或者带扩展完整版本的下载。 官网的下载版本不一定是最新版本,GIT版本获取的才是保持更新的版本。 二、Composer安装 ThinkPHP5支持使用Composer安装,如果还没有安装 Composer,你可以按 Composer安装 中的方法安装。在 Linux 和 Mac OS X 中可以运行如下命令: curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer 在 Windows 中,你需要下载并运行 Composer-Setup.exe。 如果遇到任何问题或者想更深入地学习

nginx 安装 thinkphp5 配置

寵の児 提交于 2019-11-28 04:10:05
nginx.conf server { listen 80; server_name s.huailaixx.com; charset utf-8; location ~ \.php { root /data0/www/test_hlxx/public; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^((?U).+\.php)(/?.+)$; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; include fastcgi_params; } location / { root /data0/www/test_hlxx/public; index index.html index.htm index.php; if (!-e $request_filename) { rewrite ^/(.*)$ /index.php/$1 last; break; } } } php.ini

thinkphp5/phpstudy分析入口文件index.php及localhost和配置域名访问网站根目录www

北城余情 提交于 2019-11-27 16:39:53
文章目录 1.thinkphp5入口文件简介 2.访问网站根目录www (1)localhost访问网站根目录www (2)配置域名访问网站根目录www 第一步:点击站点域名管理 第二步:站点域名设置 第三步:查看域名是否配置成功 第四步:配置hosts 第四步:浏览器运行,检验是否配置成功 OK,跑通啦! 1.thinkphp5入口文件简介 谈到入口文件,我们首先得知道它是干什么的,对叭。 首先,ThinkPHP采用单一入口模式进行项目部署和访问,无论完成什么功能,一个应用都有一个统一(但不一定是唯一)的入口,thinkphp5的默认入口文件位于 public/index.php 。 应该说, 所有应用都是从入口文件开始的 ,并且不同应用的入口文件是类似的。 在整个应用的 生命周期 中, 第一步执行的就是入口文件 ,用户发起的请求都会经过应用的入口文件,通常是 public/index.php 文件。当然,你也可以更改或者增加新的入口文件。 默认入口文件 index.php 代码如下: // 应用入口文件 // 定义项目路径 define('APP_PATH', __DIR__ . '/../application/'); // 加载框架引导文件 require __DIR__ . '/../thinkphp/start.php'; 2.访问网站根目录www

ThinkPhp5框架——分页功能

北城以北 提交于 2019-11-27 15:13:39
第一种为直接操作数据库方法: class名为Sql的controller,方法为index,paginate()方法,参数规定了每一页显示几条数据 public function index($id = 0) { $res=Db::table('tp_user')->paginate(3);、 将结果注入到‘fenye’,前台通过name='fenye'来接收数据 $this->assign('fenye',$res); return $this->fetch(); } 在view视图中的sql文件夹下的index.html中代码部分,通过volist方法进行循环数组 <div> <ul> {volist name='fenye' id='user'} <li><span>{$user.name}</span> <span>{$user.age}</span> <span>{$user.sex}</span></li> {/volist} </ul> </div> <div> 用来显示底部的上一页和下一页,和页面数量 {$fenye->render()} </div> 注册路由信息,可选的id参数 Route::any('sql/[:id]','index/sql/index'); 第二种方法是通过操作模型类中的方法; class名为Sql,在controller中的index方法

tp安装

情到浓时终转凉″ 提交于 2019-11-27 14:59:30
安装ThinkPHP ThinkPHP5 的环境要求如下: PHP >= 5.4.0 PDO PHP Extension MBstring PHP ExtensiCURL PHP Extension 严格来说, ThinkPHP 无需安装过程,这里所说的安装其实就是把 ThinkPHP 框架放入 WEB 运行环境(前提是你的WEB运行环境已经OK),可以通过下面几种方式获取和安装 ThinkPHP。 一、官网下载安装 获取 ThinkPHP 的方式很多,官方网站(http://thinkphp.cn)提供了稳定版本或者带扩展 完整版本的下载。 二、Composer安装 ThinkPHP5 支持使用 Composer 安装,如果还没有安装 Composer ,你可以 按 Composer安装 中的方法安装。在 Linux 和 Mac OS X 中可以运行如下命令: curl -sS https://getcomposer.org/installer | php mv composer.phar /usr/local/bin/composer 在 Windows 中,你需要下载并运行 Composer-Setup.exe。 如果遇到任何问题或者想更深入地学习 Composer,请参考 Composer 文档(英文), Composer 中文。 如果你已经安装有 Composer