1

i coded a contact us page and validate it what i want is when user clicks the send button the info should validate first then sent an email to given hardcoded email address i'm facing an issue don't know why my coding is not working, validation is fine but when i click on submit button it doesn't show any success message about the email and not sending email. do help please here is my code:

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">

                        <label>Your Name: * </label>
                        <span style="color:#F00;" class="error"><?php echo $nameErr;?></span>
                        <input type="text" name="name" placeholder="Noman" width="100px;">

                        <label>Email Id: * </label>
                        <span style="color:#F00;" class="error"><?php echo $emailErr;?></span>
                        <input type="text" name="email" placeholder="yourname@gmail.com">

                        <label>Contact Number (Optional): </label>
                        <span style="color:#F00;" class="error"><?php echo $contactErr;?></span>
                        <input type="text" name="contact" placeholder="0312-1234567">

                        <label>  Website URL (Optional):</label>
                        <span style="color:#F00;" class="error"><?php echo $websiteErr;?></span>
                        <input type="text" name="website" placeholder="www.yoursite.com">

                        <label>  Message: * </label>
                        <span style="color:#F00;" class="error"><?php echo $messageErr;?></span>
                        <textarea name="message" rows="10" cols="10" placeholder="Message"></textarea>

                        <input type="submit" name="submit" value="Submit" id="submit">      
                    </form> 

and here is my php code

<?php
                         function test_input($data) {
                          $data = trim($data);
                          $data = stripslashes($data);
                          $data = htmlspecialchars($data);
                          return $data;
                        }
                         $name= $email= $contact= $website= $message="";                            
                        $nameErr = $emailErr = $contactErr = $websiteErr = $messageErr = "";

                          if ($_SERVER["REQUEST_METHOD"] == "POST")
                          {                           
                          if (empty($_POST["name"])) {
                            $nameErr = "Name is required";
                          } else {
                            $name = test_input($_POST["name"]);
                            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"]);
                            if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                                  $emailErr = "Invalid email format"; 
                                }
                          }

                          if (empty($_POST["contact"])) {
                            $contact = "";
                          } else {
                            $contact = test_input($_POST["contact"]);
                          if(!is_numeric($contact)){
                              $contactErr="Please enter valid mobile number";
                            }
                            else if(strlen($contact) != 11) {
                            $contactErr="Please enter valid mobile number";
                            }
                          }

                          if (empty($_POST["website"])) {
                            $website = "";
                          } else {
                            $website = test_input($_POST["website"]);
                             if (!preg_match( "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
                                  $websiteErr = "Invalid URL"; 
                                }
                          }

                          if (empty($_POST["message"])) {
                            $messageErr = "Message is required";
                          } else {
                            $message = test_input($_POST["message"]);
                          }
                        }

                        $from = $_POST["email"]; // sender
                        $subject = $_POST["name"];
                        $message = $_POST["message"];
                        // message lines should not exceed 70 characters (PHP rule), so wrap it
                        $message = wordwrap($message, 200);
                        // send mail
                        mail("abc@gmail.com",$subject,$message,"From: $email\n");
                        echo "Thank you for sending us feedback";


                        ?> 

1 Answers1

0

I Think It's The Header Problem,

This is just an example, change values......

$header = "From: info@".$_SERVER["SERVER_NAME"]."\n";
$header .= "Content-Type: text/html; charset=utf-8\n";
$recipient = "abc@gmail.com"
$subject = $_POST['subject'];

    $body='<table width="90%" border="0">
    <tr>
    <td><b>Name:</b></td> <td>'.$name.'</td>
    </tr>
    <tr>
    <td><b>Email:</b></td> <td>'.$email.'</td>
    </tr>
    <tr>
    <td><b>Message:</b></td> <td>'.$message.'</td>
    </tr>
    <tr></table>';

    $res=@mail($recipient,$subject,$body,$header)

;
Edwin Thomas
  • 1,186
  • 2
  • 18
  • 31
  • my above code is from w3 school they didn't recommend headers in their code they leave it as optional.... i think the problem is in if() condition –  Oct 01 '14 at 20:31