表格不发布 - PHP

时间:2016-03-27 13:38:26

标签: php forms

我想制作一个人们可以发送电子邮件给我的表格。我以前做过这个,但这次它不会发布...我不会收到错误消息或类似的东西。即使我的自定义错误消息也不会显示。

<?php
            $err = "<br/>";
            if (isset($_POST['submit'])) {
                $name = $_POST['name'];
                $email = $_POST['email'];
                $message = $_POST['message'];
                if (!empty($name) && !empty($email) && !empty($message)) {
                    if (strstr($name, " ")) {
                        if(strlen($email) >=5 && strstr($email, "@") && strstr($email, ".")) {

                        } else {
                            $err = "<p style='color:#b30000'>Fill in a valid email!</p>";
                        }
                    } else {
                        $err = "<p style='color:#b30000'>Fill in a valid name!</p>";
                    }
                } else {
                    $err = "<p style='color:#b30000'>Fill in all the fields!</p>";
                }
            } else {$name = ''; $email = ''; $message = '';}

            echo $err . "
            <form id='form' action='#form' method='post'>
                <p>Full Name:</p>
                <input class='input' type='text' name='name' placeholder=' Dirk Vondiek' value=". $name . ">
                <p>E-Mail:</p>
                <input class='input' type='text' name='email' placeholder=' example@domain.com' value=". $email . ">
                <p>Your Message:</p>
                <textarea class='textarea' name='message' placeholder=' Can you pls add me on steam?'>". $message ."</textarea>
                <center><input class='submit' type='submit' name'submit' value='Send'></input></center>
            </form>
            "
        ?>

3 个答案:

答案 0 :(得分:4)

<击> action='#form',它对于操作语法无效,因此如果您以后决定使用两个单独的文件,请将其更改为action=""action="handler.php"

编辑上面的内容:经过自我测试后确实有效,但主要罪魁祸首就是这里有一个拼写错误name'submit'和你的条件陈述
if (isset($_POST['submit'])) {...}永远不会因此而发生。

  • 你忘记了等号。

因此请将其修改为name='submit'

您还可以</input>安全地摆脱它,它不是有效的结束标记。

你忘了关闭这个声明(但是在测试中这没有给我一个错误,我觉得这有点奇怪)。

</form>
        "
?>

所以

</form>
        ";
?>

<击> 仅凭错误报告就会引发一些关于它的事情。

诺塔:

但是,如果您在</form>"行以下有更多代码,则会出现解析错误,例如:
(注意:我为此示例错误添加了echo "Testing";但是会​​向您抛出与您可能使用的内容相关的解析错误:

  

解析错误:语法错误,意外'回声'(T_ECHO),期待','或';'

正如您在问题中提到的那样,它意味着发送邮件,但原始帖子中没有包含这些邮件。

如果您在该行下面和相同的<?php ...?>标记内有更多代码,那么您需要关闭该声明,如我的回答中所述。

例如。

这会抛出一个解析错误:

</form>
        "

mail();
?>

这不会抛出错误(有效),因此需要关闭(mail()只是一个填写示例)。

</form>
        ";

mail();
?>

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

答案 1 :(得分:1)

请检查您的表单操作。你需要在这里提到一个URL,例如example.php。

如果您的PHP和HTML脚本在同一页面中,您可以将其保留为空白。

<form id='form' action='' method='post'>

希望这有帮助。

答案 2 :(得分:0)

你应该改变

<form id='form' action='#form' method='post'>

<form id='form' action='' method='post'>