2014-10-01 70 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