Index.php 打开而不是发送消息

Index.php opens instead of Sending the Message

我搜索过 PHP contact form script won't run/ page opens instead

click submit in html and run php code

但无法得到答案 - 它没有用。

正如 header 所建议的那样:我正在尝试将网页上显示的信息提交到列出的电子邮件地址。

这是我的 html 的发送消息部分:

<form method="post" action="contactform/index.php">
    <div class="form-group">
        <label>First Name</label>
        <input name="fname" placeholder="Type Here">
        <div class="validation"></div>
    </div>
    <div class="form-group">
        <label>Last Name</label>
        <input name="surname" placeholder="Type Here">
        <div class="validation"></div>
    </div>
    <div class="form-group">
        <label>ID Number (For Voting)</label>
        <input name="idnumb" placeholder="Type Here">
        <div class="validation"></div>
    </div>
    <div class="form-group">
        <label>Address</label>
        <input name="addr" placeholder="Type Here">
        <div class="validation"></div>
    </div>
    <div class="form-group">
        <label>Email</label>
        <input name="email" type="email" placeholder="Type Here">
        <div class="validation"></div>
    </div>
    <div class="form-group">
        <label>Message</label>
        <textarea name="message" placeholder="Type Here"></textarea>
        <div class="validation"></div>
    </div>
    <label>*What is 2+2? (Anti-spam)</label>
    <input name="human" placeholder="Type Here">
    <div class="text-center"><button id="submit" name="submit" type="submit" value="Submit">Send Message</button></div>
</form>

这是页面底部的代码片段。

有一个contactform.js用于验证。然后 php 文件 index.php 位于服务器上名为 contactform 的文件夹中:

<?php
    $firstname = $_POST['fname'];
    $surname = $_POST['surname'];
    $idnumb = $_POST['idnumb'];
    $address = $_POST['addr'];
    $email = $_POST['email'];
    $message = $_POST['message'];
    $from = 'From: Test'; 
    $to = 'avahed87@gmail.com'; 
    $human = $_POST['human'];

    $body = "Registration from $firstname $surname\n ID:$idnumb\n  Email : $email\n Address : $address\n Message:\n $message";

    if ($_POST['submit'] && $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>';
    }
?>

基本上我需要将此信息发送到所附的电子邮件地址。我对网络开发还很陌生,所以任何建议或对教程的参考都会有所帮助。

我模仿了this article

中的代码

如果您已经安装了 php 并且 运行 剩余的 php 个文件没问题,那么我想您的问题是这样的:

当验证正确并提交后,它将自动转到 action 属性中指定的 php 文件。

php 文件将保持打开状态,除非您使用 header 转到另一个文件。我在这里注意到的一件事是,如果您直接打开 index.php 文件,您的代码可能会出错,因为直接打开时不会有任何 $_POST['variables']。所以最好用if(isset($_POST['submit'])

然后使用剩下的变量。