2016-08-02 69 views
-4

我有一個提交給它的自我在這裏HTML表單是HTML表單PHP的形式提交給本身不工作

<div class="col-md-6 contact-grid"> 
    <form name="submitted" action="<?php echo htmlentities($_SERVER['PHP_SELF']); ?>" method="POST"> 

     <div class="styled-input wow slideInUp animated animated" data-wow-delay=".5s"> 
      <input type="text" id="name" required /> 
      <label>Name</label> 
      <span></span> </div> 
     <div class="styled-input wow slideInUp animated animated" data-wow-delay=".5s"> 
      <input type="email" id="email" required /> 
      <label>Email</label> 
      <span></span> </div> 
     <div class="styled-input wow slideInUp animated animated" data-wow-delay=".5s"> 
      <input type="tel" id="phone" required /> 
      <label>Phone</label> 
      <span></span> </div> 
     <div class="styled-input wide wow slideInUp animated animated" data-wow-delay=".5s"> 
      <textarea id="message" required></textarea> 
      <label>Message</label> 
      <span></span> </div> 
     <div class="send wow shake animated animated" data-wow-delay=".5s"> 
      <input name="submit" type="submit" value="Send"> 
     </div> 

    </form> 
</div> 

,下面將我的PHP代碼來處理表單

<?php 
session_start(); 
//error_reporting(0); 
if(isset($_POST['submitted'])) {  
    $sendto = "[email protected]"; 
    $usermail = strip_tags($_POST['email']); 
    $content = nl2br($_POST['message']); 
    $phone = strip_tags($_POST['phone']); 
    $name = strip_tags($_POST['name']); 

    $subject = "New Feedback Message"; 
    $headers = "From: " . strip_tags($usermail) . "\r\n"; 
    $headers .= "Reply-To: ". strip_tags($usermail) . "\r\n"; 
    $headers .= "MIME-Version: 1.0\r\n"; 
    $headers .= "Content-Type: text/html;charset=utf-8 \r\n"; 
$msg = "<html><body style='font-family:Arial,sans-serif;'>"; 
$msg .= "<h2 style='font-weight:bold;border-bottom:1px dotted #ccc;'>New User Feedback</h2>\r\n"; 
$msg .= "<p><strong>Sent by:</strong> ".$usermail."</p>\r\n"; 
$msg .= "<p><strong>Message:</strong> ".$content."</p>\r\n"; 
$msg .= "<p><strong>Name:</strong> ".$name."</p>\r\n"; 
$msg .= "<p><strong>Phone:</strong> ".$phone."</p>\r\n"; 
$msg .= "</body></html>"; 


if(mail($sendto, $subject, $msg, $headers)) { 
    $_SESSION['errormsg'] = "Mail Sent. Thank you we will contact you shortly."; 
    echo '<center><p style="color:green">' . $_SESSION['errormsg']. '</p></center>'; 

} else { 
    $_SESSION['errormsg'] = "Mail not Sent. Try Again."; 
    echo '<center><p style="color:red">' . $_SESSION['errormsg']. 

'</p></center>'; 
    } 
} 
?> 

但我的問題是當提交表單沒有消息顯示,也沒有錯誤信息請任何幫助

回答

1

只是改變了輸入的名稱

<input name="submitted" type="submit" value="Send"> 

,將工作

+0

還有什麼幫助嗎? – youngdero

+0

請忽略我現在正在工作的第一條消息,在頁面上做了一次硬性刷新,然後我再次嘗試,並且它工作時豎起大拇指,但它在提交時顯示此提示:未定義索引:C:\ xampp \ htdocs \ dav2 \ contactform.php線路7 終於演出成功 公告:未定義的索引:在....消息 注意:未定義指數:手機.... 注意:未定義指數:名字....最後顯示成功消息 – youngdero

+0

我知道我可以用// error_reporting(0)刪除錯誤;但我想修復它 – youngdero

1

它不工作,因爲你問如果$_POST有一個名爲submitted的密鑰,但沒有該名稱的輸入元素。

相反,你可以檢查是否有在$_POST任何數據問:

if (count($_POST) > 0) 
0

你的檢查對於帖子應該是:strtoupper($_SERVER['REQUEST_METHOD']) === 'POST'而不是:isset($_POST['submitted'])。不要使用count($_POST),因爲用戶可能會發佈一個空的表單(也許表單只是用戶沒有檢查的複選框)。

0

當您提交表單時,每個字段將在$_POST中可用,但表單標籤中的名稱屬性未提交,並且在您提交表單時(不知道該btw)完全被PHP忽略。

在給出的示例中,$_POST將僅包含密鑰submit,因爲這是具有name屬性的唯一輸入元素。

在您的代碼中,假設您已提交表單,$_POST['submitted']未定義,因此isset($_POST['submitted'])從未評估爲true

您還需要驗證PHP中的用戶輸入,required屬性並不保證服務器端數據的有效性。您可以-AT最不檢查,如果字段爲空和/或如果所提供的電子郵件是用PHP的固有功能filter_var()有效:

if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false){ 
    // The provided email is invalid 
}; 

您應該考慮使用的<span style="text-align: center;"></span>代替<center>這是無效的。

希望它有幫助。

0

雖然已經回答了,但在您的isset()中使用表單的名稱,因爲在使用初始isset()時,其餘代碼可以處理數據的實際用途,所以應使用分配給你的提交按鈕,在這種情況下,這將是if(isset($_POST['submit']){} 與您的代碼的其餘部分,然後輸入,這是其中一個從錯誤中學習,在這種情況下使用整個表單的名稱將無處可去,引用個別輸入元素的形式 祝你好運,希望這會有所幫助