【问题标题】:PHP mail() function sends empty variablesPHP mail() 函数发送空变量
【发布时间】:2014-08-17 03:40:10
【问题描述】:

由于某种原因,当我收到电子邮件时,姓名、电子邮件和消息显示为空。

HTML

<form method="post" action="send.php" class="form-horizontal">
<fieldset>
    <!-- Text input-->
    <div class="form-group">
        <label class="col-md-4 control-label" for="name">Name</label>
        <div class="col-md-4">
            <input id="name" name="name" type="text" class="form-control input-md" required="">
        </div>
    </div>
    <!-- Text input-->
    <div class="form-group">
        <label class="col-md-4 control-label" for="email">Email</label>
        <div class="col-md-4">
            <input id="email" name="email" type="email" class="form-control input-md" required="">
        </div>
    </div>
    <!-- Textarea -->
    <div class="form-group">
        <label class="col-md-4 control-label" for="message">Message</label>
        <div class="col-md-4">
            <textarea class="form-control" id="message" name="message"></textarea>
        </div>
    </div>
    <!-- Button -->
    <div class="form-group">
        <label class="col-md-4 control-label" for="submit"></label>
        <div class="col-md-4">
            <button id="submit" name="submit" type="submit" value="Submit" class="btn btn-outline-inverse btn-lg">Submit</button>
        </div>
    </div>
</fieldset>
</form>

PHP 代码 简化示例

 <?php

$emailto  = "example@example.com";
$subject  = "Example subject";
$name     = Trim(stripslashes($_POST['name']));
$email    = Trim(stripslashes($_POST['email']));
$message  = Trim(stripslashes($_POST['message']));
$headers  = "From: example@example.com\r\n";
$headers .= "Reply-To: example@example.com\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1" . "\r\n";

$body = "<p>You have received a new message:</p>
              <p><strong>Ime: </strong> {$name} </p>
              <p><strong>Email Address: </strong> {$email} </p>
              <p><strong>Poruka: </strong> {$message} </p>";

$success = mail($emailto, $subject, $body, $headers);


if ($success){
    print "<meta http-equiv=\"refresh\" content=\"0;URL=thanks.html\">";
}
else{
    print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
}
?>

由于某种原因,当我收到来自此联系表单/邮件功能的电子邮件时,变量 $name、$email 和 $message 显示为空。其余显示正确。

【问题讨论】:

  • 您是否检查过$_POST 包含name 等?
  • 你用简化的代码重新测试了吗?
  • 你甩了$_POST
  • 如果您不回答 POST-Dump 问题,您将无法获得帮助。我猜你发现了什么不对,不要让我们知道吗???
  • 问题出在我的 htaccess 文件中,我有一些行正在删除 .php 和 .html 扩展名以用于美学,所以现在一切都已修复并正常工作。

标签: php html


【解决方案1】:

您还需要关闭 $body 变量中的 "。

$body = "<p>You have received a new message:</p>
         <p><strong>Ime: </strong> {$name} </p>
         <p><strong>Email Address: </strong> {$email} </p>
         <p><strong>Poruka: </strong> {$message} </p>";

【讨论】:

  • 我很确定这是问题本身的错字。
  • 我猜这个错误是@maddesign 的simplification 过程的一部分。
  • 抱歉,在我的代码中是正确的。我有 " 和 ; 在我的 $body 变量的文件中。它必须是其他错误,但我不知道是什么。
【解决方案2】:

问题出在我的 htaccess 文件中,而不是在代码中,我有一些行正在删除 php 和 html 扩展名,所以现在一切正常。

【讨论】:

    【解决方案3】:

    试试这个。

    $body = "<p>You have received a new message:</p>
             <p><strong>Ime: </strong> ".$name." </p>
             <p><strong>Email Address: </strong> ".$email." </p>
             <p><strong>Poruka: </strong> ".$message." </p>";
    

    【讨论】:

    • 为什么不赞成?有什么解释吗?
    • 我想你收集了一个反对票,因为 OP 的 $body 代码没有任何问题。
    猜你喜欢
    • 2017-07-25
    • 2020-03-08
    • 2011-06-05
    • 2015-06-26
    • 2011-08-13
    • 1970-01-01
    • 2014-03-24
    • 2020-01-27
    • 2021-12-08
    相关资源
    最近更新 更多