I am very new to PHP, so I would greatly appreciate your help.
I am making a contact form with Name, Email and Phone text boxes. Validating email and name seems to be working fine, but phone number entry is not going so well. If I enter an invalid character (like a letter) or if I don't enter anything there, after I leave the text box, the error message is supposed to be shown above the phone number text box. And it is not happening. Please help me to find the error. Here is the PHP validation code I am using:
Expand|Select|Wrap|Line Numbers
- <?php
- // Clean up the input values
- foreach($_POST as $key => $value) {
- if(ini_get('magic_quotes_gpc'))
- $_POST[$key] = stripslashes($_POST[$key]);
- $_POST[$key] = htmlspecialchars(strip_tags($_POST[$key]));
- }
- // Assign the input values to variables for easy reference
- $name = $_POST["name"];
- $email = $_POST["email"];
- $phone =$_POST ["phone"];
- $message = $_POST["message"];
- // Test input values for errors
- $errors = array();
- if(strlen($name) < 2) {
- if(!$name) {
- $errors[] = "You must enter a name.";
- } else {
- $errors[] = "Name must be at least 2 characters.";
- }
- }
- if(!$email) {
- $errors[] = "You must enter an email.";
- } else if(!validEmail($email)) {
- $errors[] = "You must enter a valid email.";
- }
- //Errors here?
- if(!$phone) {
- $errors[] = "You must enter a phone number (000-000-0000).";
- } else if(!validPhone($phone)) {
- $errors[] = "You must enter a valid phone number (000-000-0000).";
- }
- //end of errors here?
- if(strlen($message) < 10) {
- if(!$message) {
- $errors[] = "You must enter a message.";
- } else {
- $errors[] = "Message must be at least 10 characters.";
- }
- }
- if($errors) {
- // Output errors and die with a failure message
- $errortext = "";
- foreach($errors as $error) {
- $errortext .= "<li>".$error."</li>";
- }
- die("<span class='failure'>The following errors occured:<ul>". $errortext ."</ul></span>");
- }
- // Send the email
- $to = "olga@dsign.pro";
- $subject = "Website Contact Form: $name";
- $message = "From: $name \r\nPhone: $phone \r\nMessage $message";
- //$message = "$message";
- $headers = "From: $email";
- mail($to, $subject, $message, $headers);
- // Die with a success message
- die("<span class='success'>Success! Your message has been sent. We will get back to you soon.</span>");
- // A function that checks to see if
- // an email is valid
- function validEmail($email)
- {
- $isValid = true;
- $atIndex = strrpos($email, "@");
- if (is_bool($atIndex) && !$atIndex)
- {
- $isValid = false;
- }
- else
- {
- $domain = substr($email, $atIndex+1);
- $local = substr($email, 0, $atIndex);
- $localLen = strlen($local);
- $domainLen = strlen($domain);
- if ($localLen < 1 || $localLen > 64)
- {
- // local part length exceeded
- $isValid = false;
- }
- else if ($domainLen < 1 || $domainLen > 255)
- {
- // domain part length exceeded
- $isValid = false;
- }
- else if ($local[0] == '.' || $local[$localLen-1] == '.')
- {
- // local part starts or ends with '.'
- $isValid = false;
- }
- else if (preg_match('/\\.\\./', $local))
- {
- // local part has two consecutive dots
- $isValid = false;
- }
- else if (!preg_match('/^[A-Za-z0-9\\-\\.]+$/', $domain))
- {
- // character not valid in domain part
- $isValid = false;
- }
- else if (preg_match('/\\.\\./', $domain))
- {
- // domain part has two consecutive dots
- $isValid = false;
- }
- else if(!preg_match('/^(\\\\.|[A-Za-z0-9!#%&`_=\\/$\'*+?^{}|~.-])+$/',
- str_replace("\\\\","",$local)))
- {
- // character not valid in local part unless
- // local part is quoted
- if (!preg_match('/^"(\\\\"|[^"])+"$/',
- str_replace("\\\\","",$local)))
- {
- $isValid = false;
- }
- }
- if ($isValid && !(checkdnsrr($domain,"MX") || checkdnsrr($domain,"A")))
- {
- // domain not found in DNS
- $isValid = false;
- }
- }
- return $isValid;
- }
- //function to check if phone # is valid
- function validPhone($phone)
- {
- $isValid = true;
- if(!preg_match("/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/", $phone))
- {
- // $phone is not valid
- $isValid = false;
- }
- return $isValid;
- }
- // end of the function
- ?>
Expand|Select|Wrap|Line Numbers
- <table><tbody><tr><td>
- <form id="contactform" action="processForm.php" method="post">
- <table>
- <tr>
- <td><label for="name">Name:</label></td>
- <td><input type="text" id="name" name="name" /></td>
- </tr>
- <tr>
- <td><label for="email">Email:</label></td>
- <td><input type="text" id="email" name="email" /></td>
- </tr>
- <tr>
- <td><label for="phone">Phone:</label></td>
- <td><input type="text" id="phone" name="phone" /></td>
- </tr>
- <tr>
- <td><label for="message">Message:</label></td>
- <td><textarea id="message" name="message" rows="5" cols="20"></textarea></td>
- </tr>
- <tr>
- <td></td>
- <td><input type="submit" value="Submit" id="send" /></td>
- </tr>
- </table>
- </form>
- <div id="response"></div>
- </td></tr></tbody></table>