2013-07-15 9 views
0

我想弄清楚我的電子郵件代碼爲一個網站的錯誤。這是一個預訂的形式,但我不能讓它發送一次填寫信息。林仍然是新的PHP,所以任何幫助將不勝感激。提前謝謝你。試圖找出一個簡單的電子郵件形式的錯誤 - 仍然學習PHP

這裏是PHP代碼:

<?php 

$err = ''; 

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

    $first = addslashes(trim($_POST['first'])); 

    $last = addslashes(trim($_POST['last'])); 

    $email = addslashes(trim($_POST['email'])); 

    $date = addslashes(trim($_POST['date'])); 

    $women = addslashes(trim($_POST['women'])); 

    $men = addslashes(trim($_POST['men'])); 

      $message = "Name: $name" . PHP_EOL; 
      $message .= "Phone: $phone" . PHP_EOL; 
      $message .= "Email: $email" . PHP_EOL; 
      $message .= "Date: $date" . PHP_EOL; 
      $message .= "Women: $women" . PHP_EOL; 
      $message .= "Men: $men" . PHP_EOL; 

      $header = "From: [email protected]"; 

      mail("[email protected]", "New Club Reservation", $message, $header); 

      header('location:thank-you.html');  

     } else {  

     if($name=='') $err.='<p style="color:red">Your Name is empty</p>'; 

     if($phone=='') $err.='<p style="color:red">Your Phone is empty</p>';  

     if($email=='') $err.='<p style="color:red">Your E-mail is empty</p>'; 

     if($date=='') $err.='<p style="color:red">Your Reservation Date is empty</p>'; 

     if($women=='') $err.='<p style="color:red">Number of Women is empty</p>'; 

     if($men=='') $err.='<p style="color:red">Number of Men is empty</p>'; 

    } 

>

這裏是形式:

<form name="reservation" method="post" action="book.php"> 
        <label>Name</label> 
        <input type="text" name="name" id="name" placeholder="name" /> 
        <label>Phone</label> 
        <input type="text" name="phone" id="phone" placeholder="phone" /> 
        <label>E-mail</label> 
        <input type="text" name="email" id="email" placeholder="email" /> 
        <label>Date of Reservation </label> 
        <input type="date" name="date" id="date" placeholder="date" /> 
        <label>Number of Women </label> 
        <input type="text" name="women" id="women" placeholder="women" /> 
        <label>Number of Men </label> 
        <input type="text" name="men" id="men" placeholder="men" /> 
        </label> 
        <br /> 
        <button type="submit" class="btn btn-primary">Book now</button> 
       </form> 

我知道那一定是簡單的東西我在想念。

+0

你得到什麼錯誤? – ObieMD5

+0

沒有錯誤......經過,但沒有前來電子郵件,不會轉到感謝頁面 – user2582285

回答

1

您正在使用

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

但有與submit名稱的表單元素,因此它沒有足夠的,如果條件下,你可以嘗試用

更換此

<button type="submit" class="btn btn-primary">Book now</button> 

<input type="submit" name="submit" class="btn btn-primary" value="Book now" /> 
+1

+1使用HTML –

+0

@DaveChen謝謝:) –

1

很簡單。

使用if ($_SERVER['REQUEST_METHOD'] === 'POST') {來測試用戶是否發佈表單。

我做了形式的快速運行和輸出是:

Array ([name] => [phone] => [email] => [date] => [women] => [men] =>)

沒有相關的有關按鈕,這是一個糟糕的方式反正檢查。

簡單的改變:

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

到:

if ($_SERVER['REQUEST_METHOD'] === 'POST') { 

我還是會極力去反對使用提交按鈕的名稱。

請這樣一個系統:

<input type="hidden" name="type_of_post" value="register/login/what type of action"> 
+1

好,戴夫,這將是有風險的,如果OP有2使用'POST'形式更好地使用唯一的標識符,而不是使用通用的'請求方法'檢查:) –

+0

我同意,我記得某些瀏覽器(即),提交按鈕不能按預期工作。我會建議放一個隱藏的類型來說明表單應該做什麼。這也有助於服務器應該期待什麼類型的數據。 –

0

您正在使用$ name變量,但我沒有看到你的PHP文件中的設置。

除此之外,請提供錯誤信息 - 無論是從屏幕上或從您的Apache日誌(如果使用過程中的Apache)

2

if語句刪除或添加

<input type=hidden name="submit" value ='1'> 

到你的表格

只是一個小信息php POST是從表格中取名並檢索值。您的表單沒有提交名稱的元素,因此,當您發佈它時,它會返回false ...然後您使用了一個if isset(),因爲它沒有執行任何代碼。如果您的卡在別的將來添加到您的if語句和回聲「失敗」

+1

爲什麼你需要設置一個隱藏字段,如果你可以在名字簡單地分配給提交按鈕本身 –

+1

+1福氣....另一個選擇是將測試$ _ SERVER [「REQUEST_METHOD」] ==「POST」 – Orangepill

+0

因爲它的浮現在腦海,我知道有人會打我吧:) –