php未检测到所有空字段

时间:2015-10-13 18:26:15

标签: php

我在页面顶部的PHP中有以下代码行,确保所有表单字段都包含内容并且未提交为空...

if(!isset($_POST['name'])) { $err_name = 1; }

    if (!isset($_POST['phone'])) { $err_phone = 1; }

    if (!isset($_POST['email'])) { $err_email = 1; }

    if ((!isset($_POST['serve'])) && ($_POST['other'] == "")) { $err_serve = 1; }

name是文本输入

电子邮件是文本输入

手机是文字输入

serve是一个复选框数组

其他是文字输入

然后在下面我已经得到以下行,如果没有错误允许php代码继续(上图)

 if (($err_name != 1) && ($err_phone != 1) && ($err_email != 1) && ($err_serve != 1)) { 

    $name = $_POST['name']; // required
    $email_from = $_POST['email']; // required
    $phone = $_POST['phone']; // required
    $serve = $_POST['serve'];
    $other = $_POST['other']; 

然后我在每个表单字段旁边都有这个...

<?php if ($err_name == 1) { echo '<font color="red">Name cannot be empty</font>'; } ?>

<?php if ($err_phone == 1) { echo '<br /><font color="red">Phone cannot be empty</font>'; } ?>

<?php if ($err_email == 1) { echo '<font color="red">Email cannot be empty</font>'; } ?>

<?php if($err_serve == 1) { echo '<br /><font color="red">You must choose at least 1 area to serve</font>'; } ?>

有人可以帮我弄清楚为什么要做以下事情......

  • 如果我从第二个代码中取出&& ($err_serve != 1),那就是一切 除了电话显示错误消息

  • 如果我留下它,只有err_serve会抛出错误。其他人是 忽略,不显示错误。

  • 电话拒绝抛出错误消息。这是$ _POST的所有内容 处理在php。

请注意,所有测试均通过提交完整的空表单来完成

1 个答案:

答案 0 :(得分:6)

设置是否已填充并带有值。如果它是一个空值,它仍然是一个值。

不使用isset(),而是使用empty()。它检查是否:

  1. 该值存在于所有
  2. 该值不是0,空字符串,false等等。
  3. 它对复选框起作用的原因是因为未选中复选框时,浏览器不会发送。这与文本字段相反。浏览器发送文本字段的值,无论它是否为空。

    http://ca2.php.net/manual/en/function.empty.php