php表单提交给自己不工作

时间:2016-08-02 20:37:03

标签: php html forms

我有一个html表单提交给它自己这里是html表单

<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   = "info@davfubgroup.com";
    $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>';
    }
}
?>

但我的问题是提交表单时没有显示任何消息,也没有错误消息任何帮助请

5 个答案:

答案 0 :(得分:1)

它不起作用,因为您询问$_POST是否有一个名为submitted的密钥,但是没有具有该名称的输入元素。

相反,您可以通过询问:

来检查$_POST中是否有任何数据
if (count($_POST) > 0)

答案 1 :(得分:1)

只需将输入名称更改为

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

它会起作用

答案 2 :(得分:0)

您对帖子的检查应该是:strtoupper($_SERVER['REQUEST_METHOD']) === 'POST'而不是:isset($_POST['submitted'])。不要使用count($_POST)因为用户可以发布一个空表单(也许表单只是一个用户没有检查的复选框)。

答案 3 :(得分:0)

当您提交表单时,每个字段都将在$_POST中提供,但表单标签上的name属性未提交,并且在您提交表单时完全被PHP忽略(不确定btw)。

在给定的示例中,$_POST只包含一个键submit,因为这是唯一具有name属性的输入元素。

在您的代码中,假设您提交了表单,$_POST['submitted']未定义,因此isset($_POST['submitted'])永远不会评估为true

您还需要验证PHP中的用户输入,required属性不以任何方式保证服务器端数据的有效性。您可以 - 至少检查字段是否为空和/或提供的电子邮件是否与PHP的本机函数filter_var()一致:

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

您应该考虑使用<span style="text-align: center;"></span>代替无效的<center>

希望它有所帮助。

答案 4 :(得分:0)

虽然已经回答,但是在你的isset()中你使用了表单的名称,因为在使用你的初始isset()时你的其余代码可以处理数据的实际用处,你应该使用分配给你的名字提交按钮,在这种情况下是if(isset($_POST['submit']){} 然后输入其余的代码,这是从错误中学习的其中一个,在这个场景中使用整个表单的名称将使你无处,参考表单的各个输入元素 祝你好运,希望这有帮助