2011-02-15 55 views
3

我想制作一个小小的联系表单,用户输入他的姓名,电子邮件和邮件。 形式与阿贾克斯提交到必须做以下PHP文件:php内置过滤器

1-检查,如果3张贴存在变数,而不是NULL 2 - sanitize方法和验证3个变量的恶意代码和一些标准,如名称必须是,电子邮件必须是。 3-使用php的邮件()发送数据。

我怎么能做到第一,使用PHP过滤器第二步骤

NB:我看了一下PHP的手册,我明白什么。

谢谢。

+0

请记住,提交这样的电子邮件可能具有有效的语法,但不正确或属于用户。特别是不要直接邮寄()任何东西 - 这是进入垃圾邮件黑名单的一种简单方法。 – aaz 2011-02-15 21:07:14

回答

3

1. 使用isset()array_key_exists()在$ _ POST增加,看是否存在价值。

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

// or 

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

你也可以使用filter_has_var,但它也有一个你需要知道的“gotcha”。它不适用于PHP的superglobals,而是依赖于发送到PHP的数据。如果您在脚本中手动声明某些内容,例如$_POST['test'],filter_has_var将不是看到它。

如何使用filter_has_var:

if (filter_has_var(INPUT_POST, 'test')) 



2. 你想清理数据或验证呢? (两件不同的事)。

断言姓名和电子邮件有价值观,即电子邮件是一个有效的电子邮件:

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

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

您可以只使用`!empty`,因为它也在内部执行`isset`检查。 – RobertPitt 2011-02-15 21:12:18

1

你可以为电子邮件做到这一点:

filter_var('[email protected]', 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)

+0

您可以为每个字段添加更多选项,或将电子邮件的过滤器更改为FILTER_VALIDATE_EMAIL – AmirModiri 2011-02-15 21:14:36