I函数的作用是获取系统变量,必要时还可以对变量值进行过滤及强制转换
I(‘变量类型.变量名/修饰符’,[‘默认值’],[‘过滤方法或正则’],[‘额外数据源’])

在php中获取变量值得方法很多, GET[′变量名′],_GET['变量名'],G​ET[′变量名′],_POST[‘变量名’],SESSION[′变量名′],_SESSION['变量名'],S​ESSION[′变量名′],_COOKIE[‘变量名’],$_SERVER[‘变量名’] 都可以获取相应的变量值,但在thinkphp中为了安全的原因建议统一使用 I 函数来获取变量值。
例如:获取 URL 地址栏中参数 id 的值,在php中我们用 $_GET[‘id’] 来获取,在thinkphp中我们可以用 I(‘get.id’) 来获取。同样的, $_POST[‘id’] 就用 I(‘post.id’) 取代,I 函数的语法格式中的变量类型就是指的像 get 和 post 之类的请求方式,类似的变量类型还包括:


如果要获取的变量类型是get、post 或 put,可以统一用 param 变量类型,param 变量类型是框架特有的支持自动判断当前请求类型的变量获取方式,例如:I(‘param.id’) ,如果当前请求类型是GET,那么等效于 $_GET[‘id’],如果当前请求类型是POST或者PUT,那么相当于获取 $_POST[‘id’] 或者 PUT参数id。而事实上当 I 函数获取的变量类型是param时变量类型可以省略直接写为:I(‘变量名’) ,那么 GET[′id′]、_GET['id']、G​ET[′id′]、_POST[‘id’] 都可以简写为:I(‘id’) 。但当变量类型为其他类型时就不能这么简写,比如 I(‘cookie.id’)、I(‘session.id’)就不能简写。

I 函数的变量类型不区分大小写,但变量名严格区分大小写,比如 I(‘get.id’) 可以写成 I(‘GET.id’),但不能写成 I(‘get.ID’)

二、变量过滤
I函数本身默认过滤机制是htmlspecialchars,因为在配置文件中配置了:
// 系统默认的变量过滤机制
‘DEFAULT_FILTER’ => ‘htmlspecialchars’
所以 I(‘post.变量名’) 就等同于 htmlspecialchars($_POST(‘变量名’)),如果 I 函数自身带了过滤方法,则用自身带的过滤机制过滤变量,比如:

I(‘post.email’,‘请输入正确的email地址’,FILTER_VALIDATE_EMAIL);

三、变量修饰符


$page = I(‘param.page’,1);
$limit = I(‘param.limit’,15);
还有一种方式
page=I(′page′,1)−1;−>limit(page=I('page',1)-1; ->limit(page=I(′page′,1)−1;−>limit(pageSize * $page , pageSize)如果前台要限制30,50条之类的,那么就要传一个limit了,那么就要−>limit(pageSize) 如果前台要限制30 ,50条之类的,那么就要传一个limit了,那么就要 ->limit(pageSize)如果前台要限制30,50条之类的,那么就要传一个limit了,那么就要−>limit(this->pageSize * $page , $limit)
如果是默认值得话,就这么写
//订单号
$orderId = I(‘param.order_id’, ‘’);
//问题类别 问题类别:1识别错误,2数量错误,3其他
$question_type = I(‘param.question_type’, 0);
传入时间的两种写法
第一种

         if (!empty($start_time)){$end_time=$end_time."23:59:59";$whereStr.=" a.add_time > '{$start_time}' and a.add_time < '{$end_time}' and";}第二种if(!empty(I('start_date')) || !empty(I('end_date'))){$end_time = I('end_date') . " 23:59:59";$orderCondtion['add_time'] = array(array('EGT', I('start_date') . ' 00:00:00'), array('ELT', $end_time));}

如果是字符串拼接的话,会涉及到一个and问题
那么就要过滤一下了
whereStr=rtrim(whereStr=rtrim(whereStr=rtrim(whereStr, ’ and’);
忘了 一点,

Thinkphp中的 I 函数(Thinkphp3.2.3版本)相关推荐

  1. php中msubstr,PHP学习:thinkphp中字符截取函数msubstr()用法分析

    <PHP学习:thinkphp中字符截取函数msubstr()用法分析>要点: 本文介绍了PHP学习:thinkphp中字符截取函数msubstr()用法分析,希望对您有用.如果有疑问,可 ...

  2. ThinkPHP中的getLastSql函数---获取上次执行的SQL语句

    Thinkphp是我们经常用使用的一个php的MVC框架.通常我们把业务分类,分层,在不同的层处理不同的业务逻辑. 本文要讲的是model层,关于获取上次执行的SQL语句的问题.(用于日志记录,或者分 ...

  3. php中斜杆无法识别,THINKPHP3.1以下版本中识别URL尾部是否以斜杆结尾/的错误

    上一篇说的是THINKPHP3.2.3版本遇到的URL尾部是否以斜杆结尾/的错误,同样的问题出现在了THINKPHP的其他版本中,但是情况又有所不同 如:http://www.yoff.cn/Test ...

  4. ThinkPHP中的快捷函数小结

    U() 制作url地址的快捷函数 C(名称) 获得配置变量(convertion.php config.php)信息 C(名称,值) 设置配置变量信息 L() 获得语言变量信息 E() 给页面输出错误 ...

  5. PHP开启session的函数,ThinkPHP中session函数详解

    在PHP中使用$_SESSION来操作session,而ThinkPHP提供了session的封装函数session().单单这一个函数就实现了session的增删改查的功能.下面我们分别来看其应用与 ...

  6. python中plot不能显示标签_python 2: 解决python中的plot函数的图例legend不能显示中文问题...

    问题: 图像标题.横纵坐标轴的标签都能显示中文名字,但是图例就是不能显示中文,怎么解决呢? 解决: plt.figure() plt.title(u'训练性能', fontproperties=fon ...

  7. python中tile的用法_Python:numpy中的tile函数

    在学习机器学习实教程时,实现KNN算法的代码中用到了numpy的tile函数,因此对该函数进行了一番学习: tile函数位于python模块 numpy.lib.shape_base中,他的功能是重复 ...

  8. common.php中路径,关于ThinkPHP中Common/common.php文件常用函数的功能分析

    这篇文章主要介绍了ThinkPHP中Common/common.php文件常用函数功能,通过注释的形式详细分析了C方法.tag方法.B方法及autoload方法的功能与代码原理,需要的朋友可以参考下 ...

  9. thinkphp中如何使用PHP函数,如何在ThinkPHP中使用函数进行回调

    如何在ThinkPHP中使用函数进行回调 发布时间:2020-12-23 15:11:45 来源:亿速云 阅读:85 作者:Leah 本篇文章为大家展示了如何在ThinkPHP中使用函数进行回调,内容 ...

  10. php 模板 自定义函数调用,thinkphp模板中使用自定义函数

    注意:自定义函数要放在项目应用目录/common/common.php中. 这里是关键. 模板变量的函数调用格式:{$varname|function1|function2=arg1,arg2,### ...

最新文章

  1. 为什么说Netty是性能之王,因为它用了 Reactor 模型啊
  2. R语言stringr包str_detect函数检测字符串中模式存在与否实战
  3. excel引用指定单元格数据_Excel数据查找引用函数详解,一看就会用 #办公技巧 #excel #职场
  4. 安装xml2js出现npm ERR! code E404 npm ERR! 404 Not Found: event-stream@3.3.6
  5. 在苏州的一个超级棒的事情
  6. 剑指offer之61-66题解
  7. LeetCode题解之Copy List with Random Pointer
  8. P4556,jzoj3397-[GDOI2014模拟]雨天的尾巴【树链剖分,线段树】
  9. el表达式取值优先级
  10. Python html 代码转成 word(docx)
  11. Java B2B2C多用户电子商务平台SpringCloud/Boot
  12. Java的反射机制(Reflection)
  13. 全自动光电整纬机安装和功能分析
  14. [转载] python中set函数是什么数据类型_Python基本数据类型-list-tuple-dict-set详解
  15. 动态路由之RIP综合实验
  16. 基于QT实现的数独游戏DPLL的SAT求解器设计
  17. 自学java到可以找工作要多久_自学编程需要多久才能找到工作?
  18. matlab gui 作者,MATLAB GUI设计学习手记(第4版)
  19. 支付平台--网联详解
  20. 解决“fatal: 'origin' does not appear to be a git repository...”

热门文章

  1. 计算机桌面为什么没有语言栏了,语言栏不见了怎么办 电脑语言栏为何不见了【详解】...
  2. 四象限法推导lm曲线_四象限法分析
  3. Golang 企业级web后端框架
  4. 修改oracle用户密码永不过期的方法
  5. DiskPart使用方法(ZT)
  6. Android百度地图自定义添加Marker点
  7. python里lambda是什么_Python中lambda指的是什么
  8. 【老九】【Python】函数与模块
  9. Map Coloring(翻译)
  10. 杀毒软件需要开源吗?