不知道php需要一些信息,如果这是正确的.这是一个联系人页面


Dont know php need some information if this is right. It is a contact page

这是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>';
    }
}
?>