2016-11-23 63 views
0

我正在「即將推出」的網站上工作,當用戶選擇「與我們聯繫」時,會彈出一個JavaScript模式並附帶電子郵件表單。我使用了與沒有模式的頁面相同的代碼,它在那裏工作,所以我不確定爲什麼這次電子郵件沒有被髮送。與從模態中發送它有什麼關係?PHP不會從模式發送表單

我做模態的方式是,它位於頁面底部,visibility: hidden; opacity: 0;,直到用戶點擊'聯繫我們',模態將得到一個與visibility: visible; opacity: 1;相關的類。我想有可能有更好的方法來做到這一點,但我正在學習,這是我現在可以做的。

HTML:

<form class="form" role="form" method="post" action="#contact"> 

<div class="form__text"> 
    <p>Our <strong>new</strong> website will launch in <strong>Spring 2017</strong>.</p> 
    <p>In the meantime, contact us for more information.</p> 
    </div> 
    <div class="form__inputs"> 
    <div class="form__name"> 
     <label for="name" class="name">Name</label><br> 
     <input type="text" class="form-control" id="name" name="name" value="" required=""> 
    </div> 

    <div class="form__email"> 
     <label for="email" class="email">Email</label><br> 
     <input type="email" class="form-control" id="email" name="email" value="" required=""> 
    </div> 

    <div class="form__message"> 
     <label for="message" class="message">Message</label><br> 
     <textarea class="form-control" rows="4" name="message" required=""></textarea> 
    </div> 

    <div class="form__submit"> 
     <button id="submit" name="submit" type="submit">Submit</button> 
    </div> 
    </div> 
</form> 

這是PHP:

<?php 
    $name = $_POST['name']; 
    $email = $_POST['email']; 
    $message = $_POST['message']; 
    $from = 'From: xxx'; 
    $to = '[email protected]'; 
    $subject = 'Hello'; 

    $body = "From: $name\n E-Mail: $email\n Message:\n $message"; 

    if ($_POST['submit']) { 
    if (mail ($to, $subject, $body, $from)) { 
     echo '<h4 >Thank you for your message!</h4>'; 
    } else { 
     echo '<h4>Sorry there was an error sending your message. Please try again!</h4>'; 
    } 
} 
?> 

的PHP是相同的文件(的index.php)作爲HTML中,在底部(只是JS腳本前)和標籤。我得到的錯誤是:

無法發佈/

請您指教,爲什麼它沒有被髮送?我不太瞭解PHP,我試圖瞭解發生了什麼,但不是很成功。

+0

在FORM標籤中刪除'action =「#contact」'部分並重試? – Cagy79

+0

另外,你正在檢查'if($ _POST ['submit'])'但你的提交沒有'value'屬性,所以'$ _POST ['submit']'即使在你發送表單時也是一個空字符串。更好地檢查'if(!empty($ _ POST))' –

+0

use <?php echo $ _SERVER ['PHP_SELF']; ?>而不是'#contact'在表單動作 – Gopalakrishnan

回答

0

以供將來參考,我想發佈什麼解決的問題:

  1. 我加value="Send"的提交按鈕。
  2. 我確定PHP腳本正好在標籤之後,但在整個模態部分之前。
  3. 我將索引文件名稱從index.html更改爲index.php。
  4. 我直接從我的webhost(我FTP-ed文件)直接測試它。我相信肯定有辦法在本地進行測試,但我不知道如何。

謝謝大家誰發表了評論。