PHP - 电子邮件表单POST空变量(RewriteEngine Off)

时间:2016-03-05 19:54:14

标签: php .htaccess mod-rewrite post

我在这个问题上花了两天多时间,包括这个社区。仍然无法弄清楚问题的原因是什么。

1)我的表格第一行定义:

<form id="main-contact-form" name="contact-form" method="post" action="/mail/sendemail.php">

所有输入元素都定义了“名称”参数。

2)我将 sendemail.php 文件权限更改为 755

3)我的htaccess文件不包含RewriteEngine标志,如下所示:

IndexIgnore .htaccess .htpasswd */.??* *~ *# */HEADER* */README* */_vti*
DirectoryIndex index.html
AddHandler php5.5-fastcgi php

实际上 - 我从我的其他网站复制了这个htaccess文件,其中不同的电子邮件格式运作良好。

4)我试图多次修改sendemail.php。 我排除了任何验证功能,如空,修剪等 - 尝试过简单:$from = $_POST['email'] - no additional validation - 仍然无效。

5)sendemail.php:

$name       = @trim(stripslashes($_POST['name'])); 
$from       = @trim(stripslashes($_POST['email'])); 
$subject    = @trim(stripslashes($_POST['subject'])); 
$message    = @trim(stripslashes($_POST['message'])); 
$to         = 'changed@changed.com';

$headers = 'MIME-Version: 1.0'. "\r\n".
           'Content-type: text/plain; charset=iso-8859-1'."\r\n".
           'From: '.$name."\r\n".
           'Reply-To: '.$from."\r\n".
           'Subject: '.$subject."\r\n".
           'X-Mailer: PHP/'.phpversion();

mail($to, $subject, $message, $headers);
die;

6)邮件正在发送但没有发件人,主题和留言 - 这些值都是空的。

7)这是一个简单的单页网站,其中包含联系表格,只有这一个php脚本。

在大多数文章中,我可以读到RewriteEngine通常负责此错误 - 但我使用绝对路径/mail/sendemail.php并且我的htaccess文件中没有定义RewriteEngine标志。

更新。

8.在原始的sendemail.php脚本中有一个数组变量用于创建$ headers - 但是 - 在我的服务器日志中有一个信息,该数组(类型)不能用作邮件功能中的第4个参数。我决定以不同的方式创建$ header,如上所述。也许这个数组应该转换为可以作为邮件功能中的第4个参数接受的东西?

$headers   = array();
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/plain; charset=iso-8859-1";
$headers[] = "From: {$name} <{$from}>";
$headers[] = "Reply-To: <{$from}>";
$headers[] = "Subject: {$subject}";
$headers[] = "X-Mailer: PHP/".phpversion();

2 个答案:

答案 0 :(得分:0)

尝试:

$headers = "MIME-Version: 1.0\n". "Content-Type: text/plain; charset=\"iso-8859-1\"\n". "From: $name\n". "Reply-To: $from\n". "Subject: $subject\n";

答案 1 :(得分:0)

最终有效的代码:

     Sub Macro7()

        Dim ws As Worksheet
        Dim lastRow As Integer
        Dim summaryRow As Integer

            summaryRow = 1

        For Each ws In ActiveWorkbook.Worksheets

        'Copy item number and paste on Summary Page'

            Range("A2").Copy
            Sheets("Summary").Range("A" & summaryRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False

        'Copy corresponding BOM item # and paste on Summary Page'

            lastRow = ws.Cells(Rows.Count, "L").End(xlUp).Row
            Application.CutCopyMode = False
            ws.Range("L" & lastRow).copy
            Sheets("Summary").Range("B" & summaryRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False

            summaryRow = summaryRow + 1

                Next ws
        End Sub

感谢您提出的所有建议。