Thinkphp框架下封装文件下载函数】的更多相关文章

第一步:开启php_fileinfo.dll 方法:打开php.ini,将874行的;extension=php_fileinfo.dll前面的分号注释去掉即可: 第二步:控制层封装文件下载函数 function download_file($file){ if(is_file($file)){ $length = filesize($file); //文件大小 $type = mime_content_type($file); //文件类型 $showname = ltrim(strrchr(…
当我们需要在控制层调用相同的封装函数时,写多次相同的函数,显得代码十分的拉杂,不精简: TP框架有一个很好的机制,可以再Common定义一个function.php函数,当我们在控制层调用的时候直接调用就可以使用,方便快捷: 具体实现方便如下: 我们可以再三个地方设置公共的函数function.php (注意:function.php默认是不存在的,需手动创建) 根目录\Application\Common\Common\function.php(公共的函数,Home和Admin都可以调用) 根…
总的来说,要使在thinkphp框架下面HTML导入的图片.css文件和js文件有效,只有两种方法:(1)使用绝对路径:(2)在项目目录下创建新目录Public,把所有的img文件夹.js文件夹和css文件夹放在里面,同时把原有的HTML中的导入路径前面统一加上"__PUBLIC__/子目录/",比如如果在Public目录下又建了新的子目录hello,假如我们把原来的img文件夹放在hello目录下面,则在HTML中的图片导入路径应从"img/xxx.jpg"改为&…
这几天因为要做一个项目,需要可以对Web应用中通用功能进行封装,其中一个很重要的涉及到了对用户.角色和权限部分的灵活管理.所以基于TP框架自己封装了一个对操作权限和菜单权限进行灵活配置的可控制模式. RBAC角色权限分配模式大家或许都不陌生,其重要的访问控制原理就是将权限基于角色进行动态分配,在一个工作模式中,每个人都被分配了不同的角色,因为每个人角色的不同所以每个人负责的事情也不同.最简单的举一个例子来说吧,就一个大学而言,一个大学分为校长.某个学院的院长.某个系的系主任,他们每个人都有不同的…
404页面即系统在找不到请求的操作方法和找不到请求的控制器名称时的一种报错行为的优化. 第一步:在thinkphp框架中的Home/Comtroller中建一个EmptyController.class.php,其代码如下: <?phpnamespace Home\Controller;use Think\Controller;class EmptyController extends Controller{     //空操作_empty()方法    function _empty(){  …
在Thinkphp框架下根目录打开index.php 在头部加入如下代码即可: //入口文件 define('DOMAIN','abc.com');//abc.com换成自己的跟域名 //以下两行是为了子域名共享SESSION 注意 DOMAIN 需要改为实际的域名 ini_set('session.cookie_path', '/'); ini_set('session.cookie_domain', DOMAIN);…
PHP部分 扩展类代码部分: <?php namespace Think; class JsSdk {       private $appId;       private $appSecret;       public $debug = false;   public function __construct($appId, $appSecret) {         $this->appId = $appId;         $this->appSecret = $appSec…
你随便下个CI框架的源码都会看到很多的get_instance() 函数,这个函数是用来获取CI 的全局超级对象,CI 是单例模式的框架,所有全局有一个超级对象.因为只有一个实例,所以无论这个函数使用多少次都不会消耗资源的.一般来说,只有在helper或library中才使用get_instance. 以前我们都是这样用的:$this->load->library('session'); $this只作用在你自己的控制器.模型.视图中,如果你在自定义的类中也想使用CI的函数话,你就可以这样做:…
1.简单调用Kindeditor的图片上传功能: a.Html部署图片预览,记录图片上传成功之后的路径,以及上传图片点击按钮 <tr> <td>活动图片:</td> <td> <img id="picurl_img" :src="'../../'+data.picurl" alt="" class="flag-img"> </td> <td>…
之前的表单验证都是用js写的,这里也可以使用tp框架的验证.但是两者比较而言还是js验证比较好,因为tp框架验证会运行后台代码,这样运行速度和效率就会下降. 自动验证是ThinkPHP模型层提供的一种数据验证方法,可以在使用create创建数据对象的时候自动进行数据验证.验证的代码要写在模型层即Model里面. 数据验证有两种方式: 静态方式:在模型类里面通过$_validate属性定义验证规则.静态方式定义好以后其它地方都可以使用. 动态方式:使用模型类的validate方法动态创建自动验证规…
在我们的实际开发者,我们经常需要链接两个以上的数据库,方法跟简单 Thinkphp文档中也有介绍:点击查看 方法如下: 第一步:配置文件config.php <?php //默认数据库1 return array( //'配置项'=>'配置值' 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => '10.10.10.10', // 服务器地址 'DB_NAME' => 'user', // 数据库名 'DB_USER' => 'roo…
第一步:下载官方的PHPExcel文件,下载地址https://github.com/PHPOffice/PHPExcel 第二步:解压打开,将PHPExcel\Classes\全部文件拷贝到thinkhp项目的根目录\ThinkPHP\Library\Vendor\,如下图所示 第三步(导入): HTML代码如下: <form action="{:U('Index/impUser')}" method="post" enctype="multipa…
php初学者,有什么不对的还请指正. 首先是在html页面中用jq实现添加标签:divAchivePersonnal是select所在的div的外层div,divselectAchivePersonnal是select的最近一层div,info内是字符串拼接,jq标签插入用append方法.接下来是调整css样式,使div会随着标签增加而加大,这里要用一个css属性overflow(亲自查),这里直接在divselectAchivePersonnal使用时不会达到你想要的效果,所以至少要有两个嵌…
方法一. DISTINCT 方法用于返回唯一不同的值 . *distinct方法的参数是一个布尔值. 用法: $data = $Model->Distinct(true)->field('name')->select(); 生成的SQL语句是: SELECT DISTINCT name FROM think_user 方法二. GROUP方法也是连贯操作方法之一,通常用于结合合计函数,根据一个或多个列对结果集进行分组 . *group方法只有一个参数,并且只能使用字符串. 用法: $da…
jq移除标签主要就是$("#要移除的id").remove();不再赘述,这里要提醒的是jq中动态添加标签后怎样添加点击事件.一般的jq添加点击事件是用这种方法$("#id").click(function(){ 点击发生后的事件 });,你动态添加的标签用刚才的写法是没有反应的,这时候就要用live重新绑定一下click点击事件,$("#id").live('click',function(){ 点击后事件 });.…
打开项目中的配置文件,添加session的过期配置,如下: 'SESSION_OPTIONS' => array( 'name' => 'BJYSESSION', //设置session名 'expire' => 3600, //SESSION过期时间,单位秒 'use_trans_sid' => 1, //跨页传递 'use_only_cookies' => 0, //是否只开启基于cookies的session的会话方式 ),…
代码虐我千百遍,我对代码如初恋~ 问题: 查询某字段app_date数据是否为NULL,正常我们实现的办法是: $map['app_data'] = array('eq','null'); $data = M("Info") -> field("*") -> where($map) -> select() 利用echo  M("Info")->getLastSql();  打印sql语句如下: SELECT `id`,`n…
在Thinkphp框架下使用get_client_ip()函数获取客户端IP地址十分方便: 一行代码便可以实现:$ip = get_client_ip(); 但当我们测试时会遇到后台获取的IP地址显示的是局域网内的IP地址,而不是用户客户端真正的IP地址: 解决此问题办法如下:(此方法是在官方thinkphp讨论区大牛分享的http://www.thinkphp.cn/code/433.html) 修改位置:根项目\ThinkPHP\Common\funcitons.php->get_clien…
1.thinkphp介绍 一个快速.简单的基于MVC和面向对象的轻量级PHP开发框架 MVC:M数据层. V视图层 . C控制层 优点: (1)入手非常快 (2)thinkpjp提供核心内库.文件.函数 2.下载thinkphp3.2.3完整版 官网下载地址:  www.thinkphp.cn/down/610.html 2.框架目录…
使用ThinkPHP框架高速搭建站点 这一周一直忙于做实验室的站点,基本功能算是完毕了.比較有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.假设对于相同是Web方面新手的你有一丝丝帮助,那就更好了挖. 曾经用PHP做过一个非常蹩脚的站点,为什么这么说呢,由于写的全是死代码.做完以后认为实在是累,前端要div+css,js 后端要php,mysql,这么多东西要弄,十分头疼.所以,在接到做站点的任务后,我第一时间想到一定要使用开发框架去做,绝不能跟曾经一样那么累了. 我选择的是PH…
使用ThinkPHP框架高速搭建站点 这一周一直忙于做实验室的站点,基本功能算是完毕了.比較有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.假设对于相同是Web方面新手的你有一丝丝帮助,那就更好了挖. 曾经用PHP做过一个非常蹩脚的站点,为什么这么说呢,由于写的全是死代码.做完以后认为实在是累,前端要div+css,js 后端要php,mysql,这么多东西要弄,十分头疼.所以,在接到做站点的任务后,我第一时间想到一定要使用开发框架去做,绝不能跟曾经一样那么累了. 我选择的是PH…
在模块控制器Controller文件夹里创建一个 FenyeController.class.php控制器 <?php namespace Admin\Controller; use Think\Controller class FenyeController extends Controller{ public function xianshi(){ $c = D("chinastates"); $shuliang = $c->count();//求出总数量 $page…
本文转自:http://blog.csdn.net/ruby97/article/details/7574851 这一周一直忙于做实验室的网站,基本功能算是完成了.比较有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.如果对于同样是Web方面新手的你有一丝丝帮助,那就更好了挖. 以前用PHP做过一个很蹩脚的网站,为什么这么说呢,因为写的全是死代码.做完以后觉得实在是累,前端要div+css,js 后端要php,mysql,这么多东西要弄,十分头疼.所以,在接到做网站的任务后,我第一…
使用ThinkPHP框架快速搭建网站 这一周一直忙于做实验室的网站,基本功能算是完成了.比较有收获的是大概了解了ThinkPHP框架.写一些东西留作纪念吧.如果对于同样是Web方面新手的你有一丝丝帮助,那就更好了挖. 以前用PHP做过一个很蹩脚的网站,为什么这么说呢,因为写的全是死代码.做完以后觉得实在是累,前端要div+css,js 后端要php,mysql,这么多东西要弄,十分头疼.所以,在接到做网站的任务后,我第一时间想到一定要使用开发框架去做,绝不能跟以前一样那么累了. 我选择的是PHP…
php封装下拉框函数 因为在项目中会经常使用到下拉框,所以根据一个表中的数据制作下拉框函数,以便调用 //使用一个表的数据做下拉框函数 function buildSelect($tableName, $selectName, $valueFieldName, $textFieldName, $selectedValue = '') { $model = D($tableName); $data = $model->field("$valueFieldName,$textFieldName…
debug_backtrace() 在我们开发一个项目中,或者二开研究某个开源程序,需要对代码流程一步步去跟踪,来研究它的逻辑,才可以进行修改,达到我们的开发目的.php的内置函数debug_backtrace就具备这个功能,很直观的展示出从系统流程开始到执行终止的位置之前所走过的所有文件,函数,甚至调用的参数,还会具体到某个行数. 这里是官方的说明 http://php.net/manual/zh/function.debug-backtrace.php 下面我来用Thinkphp框架来举例,…
缓动函数中opcity  写百分值的值 JS一般不用小数运算,会照成精度丢失 元素的默*认透明度是 层级一次性赋值,不缓动 利用for…in为同一个父元素的子元素绑定属性 缓动框架兼容封装/回掉函数/兼容透明度/层级 function animate(ele,json,fn){ //先清定时器 clearInterval(ele.timer); ele.timer = setInterval(function () { //开闭原则 var bool = true; //遍历属性和值,分别单独处…
nginx下基于ThinkPHP框架的网站url重写nginx下的基于thinkphp的应用的url重写,需了解thinkphp的各种url格式参数的处理逻辑以及nginx重写的原理.简单点说,无论哪种url格式,nginx都需要执行ThinkPHP下的应用单一入口文件,然后将各种url格式按照一定的格式规则进行进行参数化处理,最终执行指定模块与控制器:这个过程用户是看不到的,用户只能看到各种规则的url,这些url的规则如下: #第一种 普通get多参数方式 htt://www.jb100.n…
ThinkPHP笔记二 1.1 TP框架的配置文件 在TP框架中,所有的配置文件都是自动加载的,加载的顺序:惯例配置<应用配置<调试配置<模块配置<动态配置 1. 惯例配置(ThinkPHP\Conf\convention.php),这个配置对所有的项目都适用 2. 应用配置(Application\Common\Conf\Config.php),这个配置对整个应用程序起作用 3. 调试配置(Application\Comment\Conf\debug.php),这个配置文件要自己…
详见:http://www.ucai.cn/blogdetail/7028?mid=1&f=5 可在线运行查看效果哦 导言:ThinkPHP框架是国内知名度很高应用很广泛的php框架,我们从一些简单的开发示例中来深入了解一下这个框架给我们带来的开发便捷性,以及游刃有余的扩展设计.同时也从源码分析的角度看看框架的一些不足,尽量做全面客观的评价.这里假设大家已经使用过ThinkPHP框架,基本使用方法请参考官方文档. 一.框架分层及url路由 框架的安装非常简单,下载后放入web服务器的目录即可,但…