【发布时间】:2021-04-07 07:19:03
【问题描述】:
单击提交按钮时,它显示在 if 条件之后未设置提交。我猜这个消息正在显示,因为表单没有被提交。我不知道我要去哪里错了请帮我解决这个问题。我特此附上我的contact.php 代码和mail.php 代码的一部分。谢谢
contact.php
<form id="contact-form" method="POST" action="mail.php">
<div class="row">
<div class="col-md-4">
<div class="form-group">
<label>Name</label>
<input class="form-control" name="name" id="name" placeholder="" type="text" required>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label>Email</label>
<input class="form-control" name="email" id="email" placeholder="" type="email" required>
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label>Subject</label>
<input class="form-control" name="subject" id="subject" placeholder="" required>
</div>
</div>
</div>
<div class="form-group">
<label>Message</label>
<textarea class="form-control" name="message" id="message" placeholder="" rows="10" required></textarea>
</div>
<div class="text-right"><br>
<input class="btn btn-primary solid blank button" id="btn" type="submit" value="submit" name="submit">
</div>
</form>
邮件.php
<?php
if (isset($_POST['email'])){
echo "submit is set to {$_POST['submit']} and now we send the email<br>";
$to = "abc@email.com";
$name = $_POST['name'];
$email = $_POST['email'];
$subject = $_POST['subject'];
$message = $_POST['message'];
$message .="\r\n from: $email";
if(mail ($to, $subject, $name, $message)){
echo "Enquiry sent successfully!<br>";
}
else
{
echo "Mail was not sent. Please try again later<br>";
}
} else{
echo"submit is not set<br>";
}
echo "after the if condition";
header('Location: https://imatrixautomation.com/contact.php');
exit;
?>
【问题讨论】:
-
将此添加到代码顶部 `ini_set('display_errors', 1);ini_set('display_startup_errors', 1);error_reporting(E_ALL);'这将显示错误。如果您不知道,请检查浏览器控制台以查看正在提交的内容。作为调试,最好在 $_POST 上执行 var_dump 以查看正在发送的内容。
-
只需将表单的方法更改为
method="GET"并在提交时查看构建的url,您将找到正在发送到 mail.php 的数据,在 mail.php 上将所有 $_POST 更改为$_GET 并一一回显它们以进行调试。如果一切看起来都不错,那么将所有方法改回两个文件和表单中都发布 -
您需要检查您的 html 表单,将输入提交的名称更改为电子邮件,因为在您的脚本中您正在寻找 $_POST['email'] 但实际上是它的提交。
-
@stillKonfuzed 这是一种非常冗长且不必要的调试方式。您只需查看浏览器开发工具的网络日志即可获取该信息,而无需更改任何代码。或者使用 Fiddler 之类的工具。网络已经存在了 30 年……您是否没有想到现在可能有更好的方法来查看简单的 Post 请求在做什么?学会使用可用的工具,这样会节省时间
-
@ADyson,如果您检查 html 表单,您将看到它没有设置属性,因此 php 脚本将知道它的这种表单,如果他将输入按钮更改为电子邮件,就像它在 $_POST 上一样,那么它应该可以工作。