99 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			99 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: PHP 5 Forms - Validate E-mail and URL
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								This chapter shows how to validate names, e-mails, and URLs.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### PHP - Validate Name
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The code below shows a simple way to check if the name field only contains letters and whitespace. If the value of the name field is not valid, then store an error message:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```php
							 | 
						||
| 
								 | 
							
								$name = test_input($_POST["name"]);
							 | 
						||
| 
								 | 
							
								if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
							 | 
						||
| 
								 | 
							
								  $nameErr = "Only letters and white space allowed"; 
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								> **The preg_match() function searches a string for pattern, returning true if the pattern exists, and false otherwise.**
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### PHP - Validate E-mail
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The easiest and safest way to check whether an email address is well-formed is to use PHP's filter_var() function.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								In the code below, if the e-mail address is not well-formed, then store an error message:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```php
							 | 
						||
| 
								 | 
							
								$email = test_input($_POST["email"]);
							 | 
						||
| 
								 | 
							
								if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
							 | 
						||
| 
								 | 
							
								  $emailErr = "Invalid email format"; 
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### PHP - Validate URL
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								The code below shows a way to check if a URL address syntax is valid (this regular expression also allows dashes in the URL). If the URL address syntax is not valid, then store an error message:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```php
							 | 
						||
| 
								 | 
							
								$website = test_input($_POST["website"]);
							 | 
						||
| 
								 | 
							
								if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
							 | 
						||
| 
								 | 
							
								  $websiteErr = "Invalid URL"; 
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								### PHP - Validate Name, E-mail, and URL
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Now, the script looks like this:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#### Example
							 | 
						||
| 
								 | 
							
								```php
							 | 
						||
| 
								 | 
							
								<?php
							 | 
						||
| 
								 | 
							
								// define variables and set to empty values
							 | 
						||
| 
								 | 
							
								$nameErr = $emailErr = $genderErr = $websiteErr = "";
							 | 
						||
| 
								 | 
							
								$name = $email = $gender = $comment = $website = "";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								if ($_SERVER["REQUEST_METHOD"] == "POST") {
							 | 
						||
| 
								 | 
							
								  if (empty($_POST["name"])) {
							 | 
						||
| 
								 | 
							
								    $nameErr = "Name is required";
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    $name = test_input($_POST["name"]);
							 | 
						||
| 
								 | 
							
								    // check if name only contains letters and whitespace
							 | 
						||
| 
								 | 
							
								    if (!preg_match("/^[a-zA-Z ]*$/",$name)) {
							 | 
						||
| 
								 | 
							
								      $nameErr = "Only letters and white space allowed"; 
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (empty($_POST["email"])) {
							 | 
						||
| 
								 | 
							
								    $emailErr = "Email is required";
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    $email = test_input($_POST["email"]);
							 | 
						||
| 
								 | 
							
								    // check if e-mail address is well-formed
							 | 
						||
| 
								 | 
							
								    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
							 | 
						||
| 
								 | 
							
								      $emailErr = "Invalid email format"; 
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (empty($_POST["website"])) {
							 | 
						||
| 
								 | 
							
								    $website = "";
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    $website = test_input($_POST["website"]);
							 | 
						||
| 
								 | 
							
								    // check if URL address syntax is valid (this regular expression also allows dashes in the URL)
							 | 
						||
| 
								 | 
							
								    if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
							 | 
						||
| 
								 | 
							
								      $websiteErr = "Invalid URL"; 
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (empty($_POST["comment"])) {
							 | 
						||
| 
								 | 
							
								    $comment = "";
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    $comment = test_input($_POST["comment"]);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  if (empty($_POST["gender"])) {
							 | 
						||
| 
								 | 
							
								    $genderErr = "Gender is required";
							 | 
						||
| 
								 | 
							
								  } else {
							 | 
						||
| 
								 | 
							
								    $gender = test_input($_POST["gender"]);
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								?>
							 | 
						||
| 
								 | 
							
								```
							 |