为什么我的联系人表单PHP脚本不起作用?没有错误日志

时间:2016-10-24 00:01:02

标签: php html5 web html-email web-development-server

我没有收到任何错误。我曾经以前得到未定义的索引/变量错误,但我用isset()修复了它。我填写表格并点击提交,但没有任何显示,但一个空白的白色屏幕。

这是我的PHP代码:

    <?php 


    $name = isset($_POST['name']) ? $_POST['name'] : '';
    $email = isset($_POST['email']) ? $_POST['email'] : '';
    $message = isset($_POST['message']) ? $_POST['message'] : '';   
    $from = 'From: ContactForm'; 
    $to = 'email@email.com'; 
    $subject = 'Hello';
    $verify = $_POST['verify'];

    $body = "From: $name\n E-Mail: $email\n Message:\n $message";

    if (isset($_POST["submit"]) && $verify == '4') {
        if (mail ($name, $email, $message)) { 
            echo '<p>Your message has been sent!</p>';
         } 

        else { 
            echo '<p>Something went wrong, go back and try again!</p>'; 
         }
      }    
        else if (isset($_POST["submit"]) && verify != '4') {
            echo '<p>You answered the anti-spam question incorrectly!</p>';
         }

?>

这是我的HTML代码:

          <form action="pages/mail.php" method="post">

                        <div class="col-md-12">
                            <div class="form-group">
                                <label for="name" class="sr-only">Name</label>
                                <input placeholder="Name" id="name" type="text" class="form-control input-lg">
                            </div>  
                        </div>

                        <div class="col-md-12">
                            <div class="form-group">
                                <label for="email" class="sr-only">Email</label>
                                <input placeholder="Email" id="email" type="text" class="form-control input-lg">
                            </div>  
                        </div>

                        <div class="col-md-12">
                            <div class="form-group">
                                <label for="message" class="sr-only">Message</label>
                                <textarea placeholder="Message" id="message" class="form-control input-lg" rows="3"></textarea>
                            </div>  
                        </div>

                        <div class="col-md-12">
                            <div class="form-group">
                                <input id="submit" type="submit" class="btn btn-primary btn-lg " value="Send">
                            </div>  
                        </div>

                        <div class="col-md-12">
                            <div class="form-group">
                            <label for="verify" class="sr-only">Verify</label>
                            <input name="verify" placeholder="What is 2+2" class="form-control input-lg">
                            </div>
                        </div>
                    </form> 

3 个答案:

答案 0 :(得分:2)

您的input没有name属性,因此没有“提交”密钥,并且没有调用echo的条件(白页没有错误)。

答案 1 :(得分:0)

在开发过程中打开显示PHP错误和警告,以便确切地看到出错的地方。

邮件功能调用缺少收件人地址($to),因此无论如何都很难发送电子邮件。

但脚本执行中断是因为您在}之前有一个额外的else if。如果您启用了所有错误消息,则会得到类似Fatal error: syntax error: Unexpected T_ELSE at line xy.

的内容

答案 2 :(得分:0)

白屏通常表示内部或语法错误

PHP,与JavaScript不同,它不会让您丢失分号或花括号。首先,在继续修复逻辑之前,确保您的代码在语法上有效且没有拼写错误。在大多数情况下,可以通过在PHP文件的顶部包含以下行来显示错误:

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

找到并修复这些错误之后,这就是表单本身不起作用的原因:

输入需要通过name属性

引用

虽然最好设置输入元素的ID,但PHP脚本并不了解它们。您需要为输入字段指定一个name属性,其值与服务器端的值相同。

这意味着如果您有以下HTML表单并输入

<form action="whatever.php" method="POST">
  <input type="text" name="my_text_input">
</form>

您可以在whatever.php中在服务器端访问它

<?php

$myTextBoxValue = $_POST['my_text_input'];

?>

希望这有帮助!