联系表单返回代码格式问题

时间:2015-11-24 22:58:24

标签: php forms

在尝试自定义使用PHP表单发送的内容布局时,我很难使用PHP的语法。我试图在电子邮件的不同行上显示每个输入...下面是我的PHP代码:

    <?php
// Section 1.
if( $_POST['name_here_goes'] == '' ){

    // Section 2.
    if ( !empty($_POST['firstName']) && !empty($_POST['lastName']) && !empty($_POST['emailAddress']) ) {

        $to         = '####@############.com';
        $subject     = 'NEW Contact Form';
        $message     = $_POST['firstName'] "\n\n" $_POST['lastName'];
        $headers     = 'From: ' . $_POST['emailAddress'] . ' ' . "\r\n" .
                      'Reply-To: ' . $_POST['emailAddress'] . '' . "\r\n" .
                      'X-Mailer: PHP/' . phpversion();

        // Section 3.
        if ( mail($to, $subject, $message, $headers) ) {
            echo 'Email sent. Congrats!';
        }
    }else{
        echo 'Please fill all the info.';
    }

}else{

     // Section 4.
     echo 'Spam detected!';

}

这是我的HTML代码:

    <form name="contact" method="post" action="sell.php">
    <div>
        <input type="text" name="firstName" value="" placeholder="First Name" />
        <input type="text" name="lastName" value="" placeholder="Last Name" />
        <input type="text" name="emailAddress" value="" placeholder="Email" />

    </div>
    <div>
        <input type="text" class="robotic" name="name_here_goes" value="" />
        <input type="submit" name="submit" value="Submit"/>
    </div>
</form>

1 个答案:

答案 0 :(得分:1)

你看到这一行:

$message     = $_POST['firstName'] "\n\n" $_POST['lastName'];

它在POST阵列之间缺少连接,并且错误报告设置为捕获和显示,会引发你的注意:

  

解析错误:语法错误,意外&#39;&#34; \ n \ n&#34;&#39;第x行的/path/to/file.php中的(T_CONSTANT_ENCAPSED_STRING)

将其更改为:

$message     = $_POST['firstName'] . "\n\n" . $_POST['lastName'];
                                   ^        ^ added

但是,你需要稍微处理你的标题,你不应该像这样直接传递你的POST数组,你可能会受到XSS注入的攻击。<​​/ p>

参考文献:

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

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

// rest of your code

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

另外,正如评论中所述。 PHPmailer / Swiftmailer已经安装好,可以用来处理纯文本和HTML格式的邮件。

修改

  

&#34;抱歉延迟回复..这有效!但是,如何在提交后将其指向不同的页面? - 尼克&#34;

您可以使用标题http://php.net/manual/en/function.header.php并将echo 'Email sent. Congrats!';替换为标题,但不能同时使用这两个标题。

    if ( mail($to, $subject, $message, $headers) ) {
      header('Location: http://www.example.com/');
      exit;
    }

手册中的示例:

header('Location: http://www.example.com/');
exit;

确保您没有在标头之前输出。如果您收到通知,请咨询:

您还可以参考以下内容获取更多重定向方法: