四、输入变量
1、常规获取变量的方式
$id=$_GET['ID'],
$name=$_POST['name'],
$value=$_SESSION['var'],
$name=$_COOKIE['name'],
$file=$_SERVER['PHP_SELF'],
PS:没有统一的安全处理机制,后期调整会比较麻烦
2、I()方法:
I(‘变量类型.变量名’,['默认值'],['过滤方法'])
//获取$_GET['id'];
echo I('get.id');
//$_GET['id']没有值,则默认1
echo I('get.id', 1);
//过滤$_GET['id']
echo I('get.id','','md5');
//获取$_GET;
print_r(I('get.'));
PS:其他几个系统变量均采用以上方式,这里不在赘述。
ThinkPHP 还提供了一个自动识别各种系统变量类型的接受方法:param。
//param变量自动判断变量类型
echo I('param.id');
//param可以省略
echo I('id');
如果是 PATHINFO 模式的 URL,param也可以接收。
//param获取URL所有参数
print_r(I('param.0'));
PS:取消和开启 URL 的'URL_PARAMS_BIND_TYPE'=>1配置定义,在访问这个 URL 的
时候结果有所不同:http://localhost/demo39/User/index/id/5/type/a
关闭 URL 传参顺序:Array ( [id] => 5 [type] => a )
开启 URL 传参顺序:Array ( [0] => id [1] => 5 [2] => type [3] => a )
//param获取指定参数值
echo I('param.id');
echo I('param.type');
默认情况下,I()的默认过滤是:htmlspecialchars,过滤掉HTML。
//过滤HTML,如果去掉了,则传递包含HTML的字符串,将不过滤
'DEFAULT_FILTER'=>'htmlspecialchars',
当然,如果不过滤,也可以在程序中过滤。
//设置过滤函数,会忽略配置文件里的设置
echo I('get.id','','htmlspecialchars');
如果系统设置了默认的过滤,本身某个函数又不想过滤,那么可以这么处理:
//设置屏蔽系统默认过滤
echo I('get.id','',false);//第三参数为空字符串均可