2014-10-01 49 views
1

我编写了一个联系我们的页面并验证它是什么,当用户点击发送按钮时,信息应该先验证然后发送一封电子邮件到给定的硬编码电子邮件地址我面临问题不知道为什么我的编码不起作用,验证是好的,但是当我点击提交按钮时,它不显示关于电子邮件的任何成功消息,也不发送电子邮件。不帮助,请点击这里是我的代码:验证的php联系表格中的代码错误邮件

<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="[email protected]"> 

         <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> 

,这里是我的PHP代码

<?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("[email protected]",$subject,$message,"From: $email\n"); 
         echo "Thank you for sending us feedback"; 


         ?> 

回答

0

我认为这是问题,

这只是一个例子,变化值......

$header = "From: [email protected]".$_SERVER["SERVER_NAME"]."\n"; 
$header .= "Content-Type: text/html; charset=utf-8\n"; 
$recipient = "[email protected]" 
$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>'; 

    [email protected]($recipient,$subject,$body,$header) 

; 
+0

我上面的代码是来自W3学校,他们不建议他们的代码中的标题,他们把它作为可选项....我认为问题是在if()条件 – Sunny 2014-10-01 20:31:50