2017-08-24 34 views
-2

我已經創建了一個html表單,它被設計用來做兩件事 - 提交表單信息到指定的電子郵件地址並將用戶重定向到網站上的另一個頁面。我創建了一個.php表單來管理這些操作。表單成功重定向併發送電子郵件。但是,電子郵件具有正確的目的地,主題和消息,但未能提取用戶提交給表單的信息 - 例如姓名,地址,電子郵件等。.html表單信息無法通過.php提交到電子郵件

我對網絡開發完全陌生,但希望您能提供任何見解。謝謝!

HTML:

<section> 
    <div class="row"> 

<div class="col-lg-offset-3 col-lg-6 col-md-12"><form name="Whitepaper 
Request form" method="POST" action="Info-Request.php" class="text-center"> 

<input name="First_Name" type="text" required class="contact-field-sm" 
id="fname" placeholder="First Name"> 

<input name="Last_Name" type="text" required class="contact-field-sm" 
id="lname" placeholder="Last Name"><br><br> 

<input name="Address" type="text" class="contact-field-sm" id="address" 
placeholder="Address"> 

<input name="City" type="text" class="contact-field-sm" id="city" 
placeholder="City"><br><br> 

<input name="State" type="text" class="contact-field-sm" id="state" 
placeholder="State"> 

<input name="Zip" type="text" class="contact-field-sm" id="zip" 
placeholder="Zip"><br><br> 

<input name="Phone" type="tel" class="contact-field-sm" id="phone" 
placeholder="Phone"> 

<input name="Email" type="email" class="contact-field-sm" id="email" 
placeholder="Email"><br><br> 

<input name="Company" type="text" required class="contact-field-sm" 
id="company" placeholder="Company"> 

<input name="Title" type="text" required class="contact-field-sm" id="title" 
placeholder="Title"><br><br> 

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

PHP:

<?php 
if(!isset($_POST['submit'])) 

$to = "[email protected]"; 
$from = 'Whitepaper Request Form'; 
$email_subject = " "; 
$email_message = "Results from Whitepaper Request Form:\n\n"; 

    function clean_string($string) { 
     $bad = array("content-type","bcc:","to:","cc:","href"); 
     return str_replace($bad,"",$string); 
    } 

$First_Name = $_POST['First_Name']; 
$Last_Name = $_POST['Last_Name']; 

    $email_message .= "First Name: ".clean_string($First_Name)."\n"; 
    $email_message .= "Last Name: ".clean_string($Last_Name)."\n"; 
    $email_message .= "Address: ".clean_string($Address)."\n"; 
    $email_message .= "City: ".clean_string($City)."\n"; 
    $email_message .= "State: ".clean_string($State)."\n"; 
    $email_message .= "Zip: ".clean_string($Zip)."\n"; 
    $email_message .= "Phone: ".clean_string($Phone)."\n"; 
    $email_message .= "Email: ".clean_string($Email)."\n"; 
    $email_message .= "Company: ".clean_string($Company)."\n"; 
    $email_message .= "Title: ".clean_string($Title)."\n"; 

mail($to,$from,$email_subject,$email_message); 
header('Location: Example_Retro_WhtP.pdf'); 
?> 

[EDITED] PHP:

<?php 
if(isset($_POST['submit'])){ 

$to = '[email protected]'; 
$subject = 'Whitepaper Request Form'; 
$email_message = 'Results from Whitepaper Request Form:\n\n'; 
$headers = 'From: [email protected]'; 

    function clean_string($string) { 
     $bad = array("content-type","bcc:","to:","cc:","href"); 
     return str_replace($bad,"",$string); 
     } 

    $email_message .= "First Name: ".clean_string($_POST['First_Name'])."\n"; 
    $email_message .= "Last Name: ".clean_string($Last_Name)."\n"; 
    $email_message .= "Address: ".clean_string($Address)."\n"; 
    $email_message .= "City: ".clean_string($City)."\n"; 
    $email_message .= "State: ".clean_string($State)."\n"; 
    $email_message .= "Zip: ".clean_string($Zip)."\n"; 
    $email_message .= "Phone: ".clean_string($Phone)."\n"; 
    $email_message .= "Email: ".clean_string($Email)."\n"; 
    $email_message .= "Company: ".clean_string($Company)."\n"; 
    $email_message .= "Title: ".clean_string($Title)."\n"; 

mail($to,$subject,$email_message,$headers); 
header('Location: Example_Retro_WhtP.pdf'); 
    exit; 
} 
?> 
+1

第一個和最後一個名字應該通過,但沒有任何其他信息的是未來,因爲你永遠不引用POST變量。例如。 '$ _POST ['Email']' – j08691

+0

作爲POST變量的名字和姓氏也不起作用。 –

+0

你已經在用名字和姓氏做正確的事情(只)你所有其他的表單變量都不會被包裝在'$ _POST ['']'中。嘗試在您的PHP腳本中添加一個'print_r($ _ POST)'或'var_dump()'來查看錶單中的內容。 – j08691

回答

1

的(主)的問題是與在下文中使用的參數,並有還有其他一些問題。

mail($to,$from,$email_subject,$email_message); 

爲PHP mail()的語法這​​和順序如下:

  • $到= 「到收件人」。
  • $ subject =「郵件的主題」。
  • $ email_message =「郵件內容」。
  • $ headers =「這就是你把From:[email protected]」的地方。 (需要添加並且不存在)。

按手動的語法:

布爾郵件(字符串$到,字符串$主題,字符串$消息[,字符串$ additional_headers [,字符串$ additional_parameters]])

請按照語法和郵件將共同ntain用於發送它的所有內容。

注意:您需要添加其他輸入缺少的POST數組。

但是,您聲明電子郵件已發送。在看到以下條件:

if(!isset($_POST['submit'])) 

這就是爲什麼你的代碼併發送郵件,因爲沒有提交輸入軸承這個名字的原因,因此它永遠不會「設置」。

<input id="submit" type="submit" value="Submit"> 

應閱讀:

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

,並做適當的使用技術支撐。

即:注意到,我除去!運算符,它的意思是 「不」:

if(isset($_POST['submit'])){ 

    // run your code in here to be executed 

} 

而添加else{...}條件。

同時檢查是否存在錯誤與PHP的錯誤報告:

添加一個exit;後的頭會不會也受到傷害,它甚至建議,以防止進一步的執行(你應該有更多的代碼在它下面)。

最好用empty()isset()檢查空的字段。

+0

非常感謝您的幫助。你的建議很有意義。這是我更新的代碼。我得到重定向到其他頁面,但我不再收到我的收件箱中的電子郵件。 –

+0

@care_apog請不要在評論中刪除代碼。我已經給了你如何完成的基礎知識。你的標題順便說一句是失敗的,不知道你爲什麼要使用'.pdf'文件作爲重定向。 –

+0

我需要用戶在被允許訪問.pdf文檔之前填寫表單。再次感謝你的幫助;非常感激。 –