【问题标题】:Differences between filter_var and filter_inputfilter_var 和 filter_input 的区别
【发布时间】:2015-06-25 11:32:51
【问题描述】:

为什么这不起作用:

if(!($data['email'] = filter_var(INPUT_POST,'email',FILTER_SANITIZE_EMAIL)))
{
    $errors['email'] = 'Invalid Email.';
}

这是有效的:

if(!($data['email'] = filter_input(INPUT_POST,'email',FILTER_SANITIZE_EMAIL)))
{
    $errors['email'] = 'Invalid Email.';
}

这里的区别是filter_varfilter_input,当我点击提交时,filter_var 没有提交表单,而是提交了filter_input。也在这里

filter_input(INPUT_POST,'email',FILTER_SANITIZE_EMAIL))

如果我写了例如some'@email.com 为什么不删除'。它在工作这个功能吗?我有点困惑。

【问题讨论】:

  • 不同的是filter_input()不会在数组索引不存在的情况下抛出通知错误。

标签: php


【解决方案1】:

如果您查看参数 filter_varfilter_input 函数,您会明白原因:

filter_var ($value_to_be_filtered, FILTER_TYPE, $options)

VS

filter_input($input_type , $variable_from_input, FILTER_TYPE, $options)

其中$input_typeINPUT_GETINPUT_POSTINPUT_COOKIEINPUT_SERVERINPUT_ENV 之一。

【讨论】:

  • 感谢您的回答。那么FILTER_SANITIZE_EMAIL 为什么不清理电子邮件呢?
  • @Stan 欢迎您!你的意思是filter_var 吗?那么正确的语法应该是filter_var ($_POST['email'], FILTER_SANITIZE_EMAIL)
  • 我的意思是filter_inputFILTER_SANITIZE_EMAIL 不会从电子邮件中删除非法字符。
  • @Stan FILTER_SANITIZE_EMAIL 允许使用' 字符,看看这里http://php.net/manual/en/filter.filters.sanitize.php
  • 它太小了..我错过了。对此感到抱歉,再次感谢您的信息!
猜你喜欢
  • 2016-11-17
  • 1970-01-01
  • 2019-06-10
  • 1970-01-01
  • 1970-01-01
  • 2013-12-28
  • 2015-04-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多