这是html
php是一个名为contact.html的外部文件。
这是php
<form action="mailer.php" method="post">
<label>Name</label>
<input name="name" placeholder="Type Here">
<label>Email</label>
<input name="email" type="email" placeholder="Type Here">
<label>Contact Number</label>
<input name="number" type="text" placeholder="Type Here">
<label>Message</label>
<textarea name="message" placeholder="Type Here"></textarea>
<br/>
<input id="submit" name="submit" type="submit" value="Submit">
</form>
下面是php,文件名为mailer.php。我需要知道这个表单是否有效而不是可能出了什么问题。或者如果你有其他建议。谢谢你的帮助。
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$number = $_POST['number'];
$message = $_POST['message'];
$from = 'From:me';
$to = 'me@hotmail.com';
$subject = 'Hello';
$body = "From: $name'n E-Mail: $email'n Number: $number'n Message:'n $message";
if ($_POST['submit']) {
if ($name != '' && $email != '') {
if ($human == '4') {
if (mail ($to, $subject, $body, $from)) {
echo '<p>Your message has been sent!</p>';
} else {
echo '<p>Something went wrong, go back and try again!</p>';
}
} else if ($_POST['submit'] && $human != '4') {
echo '<p>You answered the anti-spam question incorrectly!</p>';
}
} else {
echo '<p>You need to fill in all required fields!!</p>';
}
}
?>
我唯一看到的错误是对$human
的任何引用。您还没有在任何地方声明这一点。我认为这是某种捕捉。也许是一个标签为"whats 2+2"的输入字段。如果4写在输入字段中,那么它是人,如果不是,那么它就是机器人。这是低级别的机器人测试,但可能足以满足您的需求。一个应该保持为空的隐藏字段也是测试机器人的好方法。机器人会进行屏幕读取并填写隐藏字段,从而使表单无效。
<form action="mailer.php" method="post">
<label>Name</label>
<input name="name" placeholder="Type Here">
<label>Email</label>
<input name="email" type="email" placeholder="Type Here">
<label>Contact Number</label>
<input name="number" type="text" placeholder="Type Here">
<label>Message</label>
<textarea name="message" placeholder="Type Here"></textarea>
<br/>
<label>What's 2+2</label>
<input name="human" type="number" placeholder="Type Here">
<br/>
<input id="submit" name="submit" type="submit" value="Submit">
</form>
php
$name = $_POST['name'];
$email = $_POST['email'];
$number = $_POST['number'];
$message = $_POST['message'];
$from = 'From:me';
$to = 'me@hotmail.com';
$subject = 'Hello';
$human = $_POST['human'];
// rest of code
在你的php文件的末尾放上这个,它会把他们带到一个感谢页面,你可以创建
header("Location: thanks.html");
或者你可以把这个
header("Location: contact.php?thanks");
请注意,您需要将联系人页面上的文件扩展名从.html
更改为.php
。因此,我们在您的页面上运行php
,并检查页面是否从php文件加载,如果是,我们可以显示感谢消息而不是表单。
把你的表格改成这样。它将检查页面是否已从php文件加载。
<?php
if($_REQUEST["thanks"]) {
?>
<p>Thanks for your form submition</p>
<?php
} else {
?>
<form action="mailer.php" method="post">
<label>Name</label>
<input name="name" placeholder="Type Here">
<label>Email</label>
<input name="email" type="email" placeholder="Type Here">
<label>Contact Number</label>
<input name="number" type="text" placeholder="Type Here">
<label>Message</label>
<textarea name="message" placeholder="Type Here"></textarea>
<br/>
<label>What's 2+2</label>
<input name="human" type="number" placeholder="Type Here">
<br/>
<input id="submit" name="submit" type="submit" value="Submit">
</form>
<?php
}
?>
至少,你的mailer.php文件会失败,因为$human没有被设置,而是被检查/要求发送电子邮件。
下面我添加了一行(上面有一条评论),允许发送邮件。
警告:进行此更改将打开此表单,供机器人使用/垃圾邮件!
$name = $_POST['name'];
$email = $_POST['email'];
$number = $_POST['number'];
$message = $_POST['message'];
$from = 'From:me';
$to = 'me@hotmail.com';
$subject = 'Hello';
// To at least get it to run, add the below (this will allow spamming, but get the form to work)
$human = 4;
$body = "From: $name'n E-Mail: $email'n Number: $number'n Message:'n $message";
if ($_POST['submit']) {
if ($name != '' && $email != '') {
// $human variable is not being set above, so this will never pass
if ($human == '4') {
if (mail ($to, $subject, $body, $from)) {
echo '<p>Your message has been sent!</p>';
} else {
echo '<p>Something went wrong, go back and try again!</p>';
}
} else if ($_POST['submit'] && $human != '4') {
echo '<p>You answered the anti-spam question incorrectly!</p>';
}
} else {
echo '<p>You need to fill in all required fields!!</p>';
}
}
?>