1

我正在使用CKEditor创建一个html mailer将联系表发送到电子邮件的方法。
问题是,在电子邮件中提交该表格时没有收到任何价值。

电子邮件中的联系表(代码)

<form action="http://techindiainfotech.com/mail.php" method="post" name="test">
    <p>Your Name: <input maxlength="75" name="name" size="75" type="text" /></p>

    <p>Mobile Number: <input maxlength="10" name="mobile" size="10" type="text" /></p>

    <p>Business Name: <input maxlength="100" name="business" size="100" type="text" /></p>

    <p><input name="sub" type="submit" value="Submit" /></p>
</form>

处理程序 - mail.php

if ($_POST['sub'] != '') {
    unset($_POST['sub']);
    echo "Details received:<br>";
    foreach ($_POST as $val) {
        echo "$val<br>";
    }
} else {
    header("Location: http://www.techindiainfotech.com/files/contact_us.php");
    exit();
}

gmail 消息文本乱码的屏幕截图

消息文本乱码

4

3 回答 3

2
if ($_POST['sub'] != '') {
    unset($_POST['sub']);

上面的代码意味着:如果$_POST['sub']不是空字符串,则评估下面的语句。

如果您的表单没有提交,$_POST['sub'];将是未定义的,PHP 将抛出一个错误说Undefined index.

我会改用isset()正确检查表单是否已提交。

if (isset($_POST['sub'])) {
    # code ...
}

以下应该有效:

if (isset($_POST['sub'])) 
{
    unset($_POST['sub']);
    echo "Details received:<br>";
    foreach ($_POST as $val) 
    {
        echo "$val<br>";
    }
}
于 2013-09-26T13:54:59.467 回答
1

您的表单是如此简单和$_POST循环,它缩小了错误来源:

  • 文件库:脚本不在您期望的文件夹中
  • CKEditor 会抛出 HTML,要么您将其剥离,要么...查看 HTML 源代码。
  • print_r($_POST);在mail.php开头使用
  • 启用 PHP 调试/错误报告:http ://blog.flowl.info/2013/enable-display-php-errors/
  • 如果您有 javascript 我们在您的示例代码中看不到,请将其删除以进行进一步测试

更新:

  • CKEditor 更改您的输入,使其不再被name属性标记或以任何其他无效形式呈现表单(不要认为这是问题)

我将您的示例代码复制到我的网络服务器上,它正在工作。您的真实代码中可能有一些没有出现在上面的代码中的东西。

于 2013-09-26T14:23:10.150 回答
-1

一切都很好,除了表单action属性。
我正在提交表单,http://techindiainfotech.com/mail.php但由于.htaccess它被重定向到http://www.techindiainfotech.com/mail.php,这就是请求丢失的原因(我在这里没有得到适当的词)。

所以,我只需要更改我的action属性,即将我的表单提交给http://www.techindiainfotech.com/mail.phpnot to http://techindiainfotech.com/mail.php

于 2013-09-30T09:13:19.227 回答