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"]);
 | |
|   }
 | |
| }
 | |
| ?>
 | |
| ```
 |