2016-08-02 74 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']){} 与您的代码的其余部分,然后输入,这是其中一个从错误中学习,在这种情况下使用整个表单的名称将无处可去,引用个别输入元素的形式 祝你好运,希望这会有所帮助