I方法过滤的一个错误

浏览:602 发布日期:2014/04/16
3.2.1 - 普通 - 已处理
手册位置:http://document.thinkphp.cn/manual_3_2.html#input_var
使用如下方式是失效的:I('post.email','',FILTER_VALIDATE_EMAIL);原因:
因为I方法中是使用explode方法来处理$filters的 导致$filters    =   isset($filter)?$filter:C('DEFAULT_FILTER');
var_dump(gettype($filters)); //int 274
if($filters) {
$filters    =   explode(',',$filters);
var_dump(gettype($filters[0]));  // string '274'
FILTER_VALIDATE_EMAIL的类型由int变成了String
然后再使用filter_id获取这个假字符串的返回结果必然为false$data   =   filter_var($data,is_int($filter)?$filter:filter_id($filter));所以虽然是合法的email也会返回false了
评论(
后面还有条评论,点击查看>>