2015-10-06 27 views
-2

嘿,我想弄清楚我的表單和我的hangups在代碼中的問題。任何人有任何建議?配置我的PHP

<form method="post" action="tourney.php"> 
       <div class="row"> 
        <div class="col-sm-4"> 
         <input class="form-control" type="text" placeholder="Name" name="tname"> 
        </div> 
        <div class="col-sm-4"> 
         <input class="form-control" type="text" placeholder="Email" name="temail"> 
        </div> 
        <div class="col-sm-4"> 
         <input class="form-control" type="text" placeholder="School or Club" name="tclub"> 
        </div> 
        <br> 
        <br> 
        <div class="col-sm-4"> 
         <input class="form-control" type="text" placeholder="Address" name="taddress"> 
        </div> 
        <div class="col-sm-3"> 
         <input class="form-control" type="text" placeholder="City" name="tcity"> 
        </div> 
        <div class="col-sm-2"> 
         <input class="form-control" type="text" placeholder="State" name="tstate"> 
        </div> 
        <div class="col-sm-2"> 
         <input class="form-control" type="text" placeholder="Zip" name="tstate"> 
        </div> 
       </div> 
       <br> 
       <div class="row"> 
        <div class="col-sm-12"> 
         <textarea placeholder="Type your message here..." class="form-control" rows="5"></textarea> 
        </div> 
       </div> 
       <br> 
       <div class="row"> 
        <div class="col-sm-6"> 
         <select name="type" class="form-control"> 
          <OPTION VALUE="None Selected" SELECTED>Please select one</OPTION> 
          <OPTION VALUE="Middle School">Middle School Tournamanet</OPTION> 
          <OPTION VALUE="Elementary">Elementary Tournament</OPTION> 
         </select> 
        </div> 



        <div class="col-sm-6 pull-right"> 
         <input class="btn btn-danger" type="submit" value="Register"> 
        </div> 
       </div> 


      </form> 

和PHP發送電子郵件:

<?php 
if(isset($_POST['submit'])){ 
$from = "minguswrestling.com"; 
$to = "[email protected]"; 
$name = $_POST['tname']; 
$email = $_POST['temail']; 
$school = $_POST['tclub']; 
$address = $_POST['taddress']; 
$city = $_POST['tcity']; 
$state = $_POST['tstate']; 
$zip = $_POST['tzip']; 
$type = $_POST['type']; 
$message = $_POST['tmessage']; 
$subject = "Tourney Signup!"; 

$body = "From: $from \n Name: $name \n Email: $email \n School: $school\n Address: $address\n City: $city State: $state Zip: $zip\n Event: $type\n Message: $message"; 

if ($_POST['submit']) { 
if (mail ($to, $subject, $body, $from)) { 
    '<h2>Thank You!</h2>'; 
header("Location: index.html"); 
} else { 
    echo '<p>Oops! An error occurred. Try sending your message again.  </p>'; 
} 
} 
} 
?> 

任何幫助,將不勝感激。我正在使用bootstrap構建,謝謝。

+1

你正在輸出標題之前的一件事。那麼這絕不會發生'if(isset($ _ POST ['submit'])){...}' –

+1

誰沒有錯誤檢查\ display on?這是你OP – 2015-10-06 20:58:05

+0

是什麼問題? – jeroen

回答

2

您的代碼有一些錯誤。

首先,正如我在評論中提到的那樣;下面的條件語句中的一切永遠不會火起來:

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

因爲沒有名爲「提交」表單元素,成爲您的提交按鈕和錯誤報告會扔你一個undefined index submit notice...

因此,你需要修改它爲已讀:

<input name="submit" class="btn btn-danger" type="submit" value="Register"> 

但是,你有第二if ($_POST['submit']) {需要被刪除;這不是必需的。

您還沒有name屬性:

<textarea placeholder="Type your message here..." class="form-control" rows="5"></textarea> 

需要進行修改,並添加name="tmessage"因爲$message = $_POST['tmessage'];是最有可能被用於消息:

<textarea name="tmessage" placeholder="Type your message here..." class="form-control" rows="5"></textarea> 

而且,你在這裏爲「州」和「拉鍊」使用了相同的名稱:

<input class="form-control" type="text" placeholder="Zip" name="tstate"> 

這應閱讀:

<input class="form-control" type="text" placeholder="Zip" name="tzip"> 

然後,你有頭之前輸出'<h2>Thank You!</h2>';和頭:

旁註:您的意思是不是做echo '<h2>Thank You!</h2>';,然而這仍然構成爲頭之前輸出,因爲PHP實際上是你扔一個解析錯誤,但你的服務器可能沒有設置來捕捉和顯示告示/錯誤等

if (mail ($to, $subject, $body, $from)) { 
    '<h2>Thank You!</h2>'; 
header("Location: index.html"); 
} 

你需要從那些和兩者的「一」的選擇。請將'<h2>Thank You!</h2>';修改爲echo '<h2>Thank You!</h2>';並刪除標題,或刪除「謝謝」並使用標題。

請教關於堆棧以下有關頭之前輸出:

添加error reporting到您的文件(S)的頂部,這將有助於找到錯誤。

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 

// rest of your code 

旁註:顯示錯誤應該只在分期完成,並且從不生產。

這裏是一個重寫,看到了嵌入的註釋:

<?php 
if(isset($_POST['submit'])){ 
    $from = "minguswrestling.com"; 
    $to = "[email protected]"; 
    $name = $_POST['tname']; 
    $email = $_POST['temail']; 
    $school = $_POST['tclub']; 
    $address = $_POST['taddress']; 
    $city = $_POST['tcity']; 
    $state = $_POST['tstate']; 
    $zip = $_POST['tzip']; 
    $type = $_POST['type']; 
    $message = $_POST['tmessage']; 
    $subject = "Tourney Signup!"; 

    $body = "From: $from \n Name: $name \n Email: $email \n School: $school\n Address: $address\n City: $city State: $state Zip: $zip\n Event: $type\n Message: $message"; 

if (mail ($to, $subject, $body, $from)) { 
    echo '<h2>Thank You!</h2>'; // either use echo 
// header("Location: index.html"); // or header, not both. Comment one or the other out. 
} else { 
    echo '<p>Oops! An error occurred. Try sending your message again.  </p>'; 
} 

} 
else { echo "Submit is not set."; } 
?> 

腳註:

這將是最好也使用!empty()對你的POST陣列,因爲任何人都可以使用這個表單並傳遞空值。

參考:

另外,$from = "minguswrestling.com";要小心一點。 mail()預計這是一個電子郵件地址,而不是一個域,並可能以垃圾郵件結束。

最好使用手冊中所述的From:

諮詢手冊:


最後說明。

目前還不清楚您是從您自己的PC還是託管服務使用此功能。

如果它來自您自己的PC,那麼需要安裝並正確配置Web服務器,包括PHP和郵件。

如果來自託管服務,請確保郵件可供您使用。

測試時還要檢查垃圾郵件。

如果你要使用標題,添加exit;它,否則你的代碼可能要繼續執行:

header("Location: index.html"); 
exit; 

切記不要用「回聲」如果你打算使用頭。

+0

謝謝你,我的男人。我很感激知識的下降。 – Core

+0

@DustinCoressel不客氣Dustin。我希望這能讓你獲得成功。我做了一些更多的編輯,所以你可能需要重新加載我的答案。如果它確實解決了問題,您可以將其標記爲已解決。你沒有義務,但它通知大家,找到了解決方案。 *歡迎來到Stack *,歡呼。 –

+0

@DustinCoressel要將問題標記爲已解決,請訪問http://meta.stackexchange.com/a/5235/,然後對給出的答案進行同樣的處理。 –

0

以下:

'<h2>Thank You!</h2>'; 
header("Location: index.html"); 

是錯誤的,你不能將頭之前輸出任何東西。刪除:

'<h2>Thank You!</h2>';