KDJ
KDJ

Reputation: 309

php is not detecting all empty fields

I've got the following line of code in PHP at the top of the page making sure all form fields have content in them and not submitted empty...


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 is a text input

email is a text input

phone is a text input

serve is a checkbox array

other is a text input


Then below that I've got the following lines which allow the php code to continue if there are no errors (above)


 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']; 

Then I've got this next to each form field...


<?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>'; } ?>

Can someone please help me figure out WHY its doing the following...

Note that all tests are done by submitting a completely empty form

Upvotes: 1

Views: 133

Answers (1)

Evert
Evert

Reputation: 99533

The values will be set whether or not they are filled with a value. If it's an empty value, it's still a value.

Instead of using isset(), use empty(). It checks both if:

  1. The value exists at all
  2. The value is something other than 0, an empty string, false, etc.

The reason it works for the checkbox, is because when a checkbox is not checked, the browser does not send the value at all. This is contrary to text fields. A browser will send the value of a text field whether or not it's empty.

https://www.php.net/manual/en/function.empty.php

Upvotes: 6

Related Questions