【问题标题】:php built-in filterphp内置过滤器
【发布时间】:2011-02-15 20:33:55
【问题描述】:

我想制作一个小联系表,用户在其中输入他的姓名、电子邮件和消息。 表单使用 ajax 提交到一个 php 文件,该文件必须执行以下操作:

1- 检查 3 个发布的变量是否存在且不为 NULL 2- 清理和验证恶意代码的 3 个变量和一些标准,例如名称必须是,电子邮件必须是.. 3- 使用 php 的 mail() 发送数据。

如何用php filter实现第一步和第二步

注意:我看了一下php的手册,我什么都不懂。

谢谢。

【问题讨论】:

  • 请记住,以这种方式提交的电子邮件可能具有有效的语法,但不正确或不属于用户。特别是不要直接向它mail() 任何东西——这是进入垃圾邮件黑名单的一种简单方法。

标签: php filter


【解决方案1】:

1。 在 $_POST 上使用isset() 或array_key_exists() 查看值是否存在。

if (isset($_POST['a_field']))

// or

if (array_key_exists('a_field', $_POST))

您也可以使用 filter_has_var,但它也有一个需要注意的“陷阱”。它不适用于 PHP 的超全局变量,而是依赖于发送到 PHP 的数据。如果您在脚本中手动声明某些内容,例如$_POST['test'],filter_has_var 将不会看到它。

如何使用 filter_has_var:

if (filter_has_var(INPUT_POST, 'test'))



2. 您想清理数据还是验证数据? (两个不同的东西)。

断言 name 和 email 具有值,并且该电子邮件是有效的电子邮件:

if (!empty($_POST['name']))

if (!empty($_POST['email']) && filter_input(INPUST_POST, 'email', FILTER_VALIDATE_EMAIL))

【讨论】:

  • 您可以只使用!empty,因为它也在内部执行isset 检查。
  • 感谢您提供 array_key_exists 方法 - 我在另一个项目中需要它:-)
【解决方案2】:

您可以对电子邮件执行此操作:

filter_var('name@domain.com', FILTER_VALIDATE_EMAIL)

返回过滤后的数据,如果过滤失败则返回 FALSE。

您可以使用数组来验证值。

$args = array(
    'name'   => array('filter'    => FILTER_VALIDATE_BOOLEAN,
                            'flags'     => FILTER_NULL_ON_FAILURE),
    'email'    => array('filter'    => FILTER_VALIDATE_BOOLEAN,
                            'flags'     => FILTER_NULL_ON_FAILURE),
     'message'    => array('filter'    => FILTER_VALIDATE_BOOLEAN,
                            'flags'     => FILTER_NULL_ON_FAILURE));

$myinputs = filter_input_array(INPUT_GET, $args);

您可以像这样向一个字段添加多过滤器或多标志

email => array("filter" => array(FILTER_VALIDATE_EMAIL ,FILTER_VALIDATE_BOOLE)

【讨论】:

  • 您可以为每个文件添加更多选项或将电子邮件过滤器更改为 FILTER_VALIDATE_EMAIL
猜你喜欢
  • 1970-01-01
  • 2022-01-08
  • 2020-05-25
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多