2015-06-04 30 views
-2

我有以下html表單,當用戶點擊提交時,它會觸發contactengine.php中的php代碼,但是我得到的電子郵件和.txt表單中缺少值。PHP表單不會在POST上傳遞值

<!------------------from start------------> 
    <form method="POST" action="contactengine.php" class="form-inline" > 
     <div class="form-group"> 

     <label>Full Name*</label><br> 
     <input name="full_name" type="text" class="form-control" placeholder="Full Name" id="full_name" required> 
     </div> 
     <div class="form-group"> 
     <label>Telephone *</label><br> 
     <input name="contact_tel" type="text" class="form-control" placeholder="Telephone" id="contact_tel" required> 
     </div> 
<div class="form-group"> 
     <label>Email *</label><br> 
     <input name="contact_email" type="email" class="form-control" placeholder="Email Address" id="contact_email" required> 
     </div> 

     <div class="form-group"> 
     <label>Subject of Enquiry *</label><br> 
     <select name="sub_enquiry" class="form-control" id="sub_enquiry"> 
      <option value="Assesments" >Assesments</option><option value="Services" >Services</option> 
       <option value="Inpections" >Inpections</option> 
       <option value="Other" >Other</option>   
     </select> 
     </div><br> <br> 
<label>Your message *</label><br> 
     <textarea name="contact_msg" class="form-control" rows="5" id="contact_msg" required ></textarea> <br > 
     <br > 
    <button type="submit" class="btn btn-purple" ><span class="glyphicon glyphicon-envelope"></span> Submit</button> 
    </form> 

<!----------------------php form------------------> 
<?php 
$to = "[email protected]"; 
$Subject = "OFSUK.ORG"; 
$full_name = $_POST['full_name']; 
$contact_email = $_POST['contact_email']; 
$contact_tel = $_POST['contact_tel']; 
$sub_enquiry = $_POST['sub_enquiry']; 
$contact_msg = $_POST['contact_msg']; 

// validation 
$validationOK=true; 
if (!$validationOK) { 
    header("location:/error.php"); 
    exit; 
} 

// prepare email body text 
$Body = ""; 
$Body .= "\n"; 
$Body .= "Name: "; 
$Body .= $full_name; 
$Body .= "\n"; 
$Body .= "Email: "; 
$Body .= $contact_email; 
$Body .= "\n"; 
$Body .= "Telephone: "; 
$Body .= $contact_tel; 
$Body .= "\n"; 
$Body .= "Enquiry: "; 
$Body .= $sub_enquiry; 
$Body .= "\n"; 
$Body .= "Message: "; 
$Body .= $contact_msg; 
$Body .= "\n"; 

// send email 
$success = mail($to, $Subject, $Body); 
$email_from = $full_name.'<'.$email_from.'>'; 

$myfile = fopen("emails.txt", "a") or die("Unable to open file!"); 
$txt = $Body; 
fwrite($myfile, "\n". $txt); 
fclose($myfile); 

// redirect to success page 
if ($success){ 
    header("location:/"); 
} 
else{ 
header("location:/contact-us.php"); 
} 

?> 

這兩個存儲在兩個位置,但工作正常,我只是沒有得到任何數據。

+0

儘量不要用大寫字母開始變量名稱。只是更好的編碼實踐。 – OllyBarca

+0

請'var_dump($ _ POST);'首先,請確保您的post變量到達PHP。 –

+1

另外請注意,您需要過濾和消毒用戶輸入,否則您的表單很快就會被垃圾郵件發送者利用。 –

回答

0

變化<button type="submit" class="btn-purple"/>

<input type="submit" name="sbmt" class="btn-purple"/>

然後對其進行驗證,如果sbmt已定,如果是打印出來的值

+0

是一個PHP的新手,我不斷回到舊的代碼,我坐在旁邊,我將如何去這個phpmail的方式。 –

0

嘗試使用

pg_escape_string

像...

pg_escape_string($_POST['full_name']); 

...修正數據傳遞的問題。

+0

['pg_escape_string()'](http://php.net/manual/en/function.pg-escape-string.php) - *「pg_escape_string()轉義一個查詢數據庫的字符串。」* - **注意:** - *這個函數需要PostgreSQL 7.2或更高版本。* - 這不是數據庫相關的,所以他們爲什麼要使用它? –

+0

因爲當'var_dump($ _ POST);'在我的腳本中沒有任何回覆,這有所幫助。 – Dargmuesli