<?php // demo/email_validation.php
/**
* How to use a utility function to test for a valid email address
* 'Valid' does not mean email will be received - parked domains are valid, but inactive
*
* http://php.net/manual/en/intro.filter.php
* http://php.net/manual/en/function.checkdnsrr.php
* https://tools.ietf.org/html/rfc5321
*
* See also:
* https://www.experts-exchange.com/articles/3939/Registration-and-Email-Confirmation-in-PHP.html
*/
error_reporting(E_ALL);
function check_valid_email($email, $bogus=[], $route=TRUE)
{
$valid = TRUE;
// IF THE EMAIL STRING IS IMPROPERLY FORMED
if(filter_var($email, FILTER_VALIDATE_EMAIL) === FALSE) $valid = FALSE;
// IF THE DOMAIN IS IN OUR BLOCKED LIST
foreach ($bogus as $badguy) {
if (stripos($email, $badguy)) $valid = FALSE;
}
// IF THE DOMAIN HAS NO MAIL-EXCHANGE RECORD
if ($route) {
$domain = explode('@', $email);
if ( !checkdnsrr($domain[1]) ) $valid = FALSE;
}
return $valid;
}
// INJECTED DEPENDENCY - LIST OF BAD DOMAINS
$bogus = [ '@unknown.com', '@example.com', '@gooseball.org' ];
// DEMONSTRATE THE FUNCTION IN ACTION
$e = !empty($_GET['e']) ? $_GET['e'] : NULL;
if ($e)
{
if (check_valid_email($e, $bogus))
{
echo "<br/>VALID: $e" . PHP_EOL;
}
else
{
echo "<br/>BOGUS: $e" . PHP_EOL;
}
}
// END OF PROCESSING - CREATE THE FORM USING HEREDOC NOTATION
$form = <<<ENDFORM
<form>
TEST A STRING FOR A VALID EMAIL ADDRESS:
<input name="e" value="$e" />
<input type="submit" />
</form>
ENDFORM;
echo $form;
Title | Views | Activity |
---|---|---|
PHP, jQuery, and Form Actions | 977 | |
Introduction to HTML (Part 1) | 113 | |
Introduction to jQuery (Part 2) | 907 | |
Introduction to PHP: Building the Form | 445 |