我有一个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>';
}
}
?>
但我的问题是提交表单时没有显示任何消息,也没有错误消息任何帮助请
答案 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']){}
然后输入其余的代码,这是从错误中学习的其中一个,在这个场景中使用整个表单的名称将使你无处,参考表单的各个输入元素
祝你好运,希望这有帮助