我使用相同的联系表格已经有一段时间了:
<?php
if (isset($_POST['submit']) ) {
$name = $_POST['names'];
$email = $_POST['email'];
$message = $_POST['message'];
$robot = $_POST['robot'];
$from = 'online@domain.co.uk';
$to = 'info@domain.co.uk';
$subject = 'Online Enquiry';
$headers = "From: DOMAIN <no-reply@domain.co.uk> \r\n";
$headers .= 'Reply-To:'. $email . "\r\n";
$headers .= "X-Mailer: PHP/" . phpversion(); // Sender's Email
$body = "From: $name\n E-Mail: $email\n Message:\n $message";
} ?>
<?php if (isset($_POST['submit'])) {
if ($name != '' && $email != '' && $message !='') {
if ($robot != 'yes') {
if (mail ($to, $subject, $body, $headers)) {
echo '<p class="approved"><strong>Your message has been submitted</strong></p>';
} else {
echo '<p class="warning"><strong>Something went wrong!</strong></p>';
}
} else if ($_POST['submit'] && $robot == 'yes') {
echo '<p class="warning"><strong>Looks like you are spam!</strong></p>';
}
} else {
echo '<p class="warning"><strong>Please complete all fields.</strong></p>';
}
}
?>
<form id="contact" method="post" action="#contact">
<label>Name</label>
<input name="names" type="text" placeholder="NAME">
<label>Email</label>
<input name="email" type="email" placeholder="EMAIL">
<label>Message</label>
<textarea rows="10" name="message" placeholder="MESSAGE"></textarea>
<input id="capture" name="robot" type="checkbox" value="yes">
<input id="submit" name="submit" type="submit" value="Submit">
</form>
它在其他网站上工作得很好,但在一个域上不起作用?提交只是返回错误“出了问题!”。该网站与许多其他工作正常的网站位于同一个云服务器上。这让我很生气,因为我看不出错误。
打开调试我收到错误: 注意:未定义的索引:第6行的/form-contact.php中的机器人
我曾尝试一起删除机器人检查但它仍然不起作用,但在调试时没有产生错误?
有人可以提供任何建议吗?
答案 0 :(得分:0)
如果未选中复选框,则不会发送。 取代
$robot = $_POST['robot'];
到
$robot = isset($_POST['robot']) ? 'yes' : 'no';
答案 1 :(得分:0)
您的条件符合案例。尝试在提交时检查$ robot的值。
<input id="capture" name="robot" type="checkbox" value="yes">
if ($robot != 'yes') {
if (mail ($to, $subject, $body, $headers)) {
echo '<p class="approved"><strong>Your message has been submitted</strong></p>';
} else {
echo '<p class="warning"><strong>Something went wrong!</strong></p>';
}