Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>PHP filters: Handling optional values / optional form inputs with filter_input_array() filter function.</p> <p>I'll demonstrate a simple way of how to handle optional fields or form inputs when working with PHP filters. The rule of thumb is:</p> <ol> <li>Filter ALL form inputs, required &amp; optional. Don't leave out optional fields in your filter.</li> <li>Use the === comparison operator to differentiate between FALSE, NULL, "" and 0 values</li> </ol> <p>Sample code for a simple contact form with 4 required and 4 optional inputs is shown below</p> <pre><code>&lt;?php if ($_SERVER["REQUEST_METHOD"] == "POST"){ /*set validation control variable*/ $input_error_flag = true; /*set form input validation filters*/ $form_filter = array( 'first_name' =&gt; FILTER_SANITIZE_STRING, 'middle_name' =&gt; FILTER_SANITIZE_STRING, 'last_name' =&gt; FILTER_SANITIZE_STRING, 'email_address' =&gt; FILTER_SANITIZE_EMAIL, 'postal_address' =&gt; FILTER_SANITIZE_NUMBER_INT, 'street_address' =&gt; FILTER_SANITIZE_STRING, 'telephone_number' =&gt; FILTER_SANITIZE_NUMBER_INT, 'mobile_number' =&gt; FILTER_SANITIZE_NUMBER_INT, ); /*list optional fields or optional form inputs in array*/ $optional_fields = array( 'middle_name' =&gt; "", 'postal_address' =&gt; "", 'street_address' =&gt; "", 'mobile_number' =&gt; "", ); /*set error display message of each required element*/ $error_description = array( 'first_name' =&gt;"Missing or incorrect First Name", 'last_name' =&gt;"Missing or incorrect Last Name", 'email_address' =&gt;"Missing or incorrect Email Address", 'telephone_number' =&gt;"Missing or incorrect Telephone Number", ); /*sanitize all form inputs against form_filter*/ $form_data = filter_input_array(INPUT_POST, $form_filter); /*check form inputs for filter validation errors*/ foreach ($form_data as $form_input =&gt; $value){ /*check if filter failed (false), input not defined (null) or input missing ("") * and insert name of form input element into $invalid_array for error display */ if($value === FALSE || $value === NULL || $value == ""){ /*exclude error display for optional items with empty values*/ if(!(array_key_exists($form_input, $optional_fields) &amp;&amp; $value == "")){ $invalid_inputs[] = $form_input; } } } /*unset filter validation control variable if no errors*/ if(empty ($invalid_inputs)) $input_error_flag = false; /*your calls to SQL functions for INSERT or UPDATE statements go here*/ if(!$input_error_flag){ functionname::getInstance()-&gt;insert_contact_details($form_data); } } ?&gt; </code></pre> <p>And finally the html form with the error display section</p> <pre><code>&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"&gt; &lt;html&gt; &lt;head&gt; &lt;title&gt;&lt;/title&gt; &lt;meta http-equiv="Content-Type" content="text/html; charset=UTF-8"&gt; &lt;/head&gt; &lt;body&gt; &lt;form action="sample.php" method="POST" id="sample"&gt; &lt;label for="first_name"&gt;First Name*&lt;/label&gt; &lt;input type="text" name="first_name" id="first_name" value="&lt;?php echo $form_data['first_name']; ?&gt;"/&gt;&lt;br/&gt; &lt;label for="middle_name"&gt;Middle Name&lt;/label&gt; &lt;input type="text" name="middle_name" id="middle_name" value="&lt;?php echo $form_data['middle_name']; ?&gt;"/&gt;&lt;br/&gt; &lt;label for="last_name"&gt;Last Name*&lt;/label&gt; &lt;input type="text" name="last_name" id="last_name" value="&lt;?php echo $form_data['last_name']; ?&gt;"/&gt;&lt;br/&gt; &lt;label for="email_address"&gt;Email Address*&lt;/label&gt; &lt;input type="text" name="email_address" id="email_address" value="&lt;?php echo $form_data['email_address']; ?&gt;"/&gt;&lt;br/&gt; &lt;label for="postal_address"&gt;Postal Address&lt;/label&gt; &lt;input type="text" name="postal_address" id="postal_address" value="&lt;?php echo $form_data['postal_address']; ?&gt;"/&gt;&lt;br/&gt; &lt;label for="street_address"&gt;Street Address&lt;/label&gt; &lt;input type="text" name="street_address" id="street_address" value="&lt;?php echo $form_data['street_address']; ?&gt;"/&gt;&lt;br/&gt; &lt;label for="telephone_number"&gt;Telephone Number*&lt;/label&gt; &lt;input type="text" name="telephone_number" id="telephone_number" value="&lt;?php echo $form_data['telephone_number']; ?&gt;"/&gt;&lt;br/&gt; &lt;label for="mobile_number"&gt;Mobile Number&lt;/label&gt; &lt;input type="text" name="mobile_number" id="mobile_number" value="&lt;?php echo $form_data['mobile_number']; ?&gt;"/&gt;&lt;br/&gt; &lt;input type="submit" name="submit" value="submit"&gt;&lt;br/&gt; &lt;?php //display input validation errors on your html form if ($input_error_flag){ foreach($invalid_inputs as $key =&gt; $form_input){ if(array_key_exists($form_input, $error_description)){ echo $error_description[$form_input]."&lt;br/&gt;"; } } } ?&gt; &lt;/form&gt; &lt;/body&gt; &lt;/html&gt; </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload