【问题标题】:Obtaining PHP variable from HTML <input>从 HTML <input> 获取 PHP 变量
【发布时间】:2020-03-07 00:15:40
【问题描述】:

这是我第一个使用 PHP 的网站,我正在制作使用 PHP 向我发送邮件的联系表格。 我想设置两条不同的消息:

  1. 如果所有字段都填满,则发送第一条消息;
  2. 如果两个特定 inputs(specific-text-1specific-text-2)之一为空,则发送第二条消息。

contact.html 中的 HTML

<form id="query-form" class="query-form" method="post">
  <input type="text" name="specific-text-1" placeholder="Text 1">
  <br>
  <input type="text" name="specific-text-2" placeholder="Text 2">
  <br>
  <input type="text" name="subject" placeholder="Email Subject">
  <br>
  <textarea name="message" placeholder="Message text" maxlength="700"></textarea>
  <br>
  <input type="submit" name="submit" placeholder="Send Message">
</form>

其他文件中的 PHP,contact.php

<?php
  if (isset($_POST['submit'])) {
  $subject = $_POST['subject'];
  $message = $_POST['message'];
  // I want $specific1 and $specific2 to be in if command
  $specific1 = $_POST['specific-text-1'];
  $specific2 = $_POST['specific-text-2'];
  $mailTo = "mail@mymail.com";

  $txt = "Message received.\n\nSpecific-text-1: ".$specific1."\n"."Specific-text-2: ".$specific2."\n\n"."Message context: \n\n".$message;
  mail($mailTo, $subject, $txt);
  }
?>

我想用这样的东西代替$txt = "Message received..."

if (specific-text-1 == '' || specific-text-2 == '') {
  $txt = "Message2 received.\n\n"."Message context: \n\n".$message;
}
else {
  $txt = "Message received.\n\nSpecific-text-1: ".$specific1."\n"."Specific-text-2: ".$specific2."\n\n"."Message context: \n\n".$message;
}

我如何让 PHP 知道用户类型的 specific-text-1specific-text-2 文本是否为空并发送 Message2 或是否都是完整的发送 Message

非常感谢大家!

【问题讨论】:

    标签: php html if-statement


    【解决方案1】:

    你的条件倒退了。

    如果您使用串联增量构建$txt,代码会更简单。

    $txt = "Message received.\n\n";
    if ($specific1 != "" && $specific2 != "") {
        $txt .= "Specific-text-1: $specific1\nSpecific-text-2: $specific2\n\n";
    }
    $txt .= "Message context:\n\n$message";
    

    .= 运算符将字符串附加到变量中。

    只有在两个都由用户填写的情况下,这才会将特定的文本字段添加到邮件中。

    【讨论】:

    • 我可以做if ($specific1 != "" &amp;&amp; $specific 2 != "")。此外,它是否会查找用户对这些元素的输入?
    • 是的,如果你只想在两者都填写的情况下包含它们,你可以这样做。
    • 当然它会在这些元素上查找用户输入,这就是 $_POST 包含的内容。
    • 我尝试了您对我的回复,if ($specific1 != "" &amp;&amp; $specific2 != "") { $txt .= "Specific-text-1: $specific1\nSpecific-text-2: $specific2\n\n"; },也尝试了else,但我收件箱中的消息仍然是第二个。我错过了什么?
    • 您是说即使您没有填写两个特定的文本字段,您也收到了Specific-text-1: 的消息?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 2014-06-10
    • 1970-01-01
    • 1970-01-01
    • 2012-08-08
    • 1970-01-01
    • 2018-12-05
    相关资源
    最近更新 更多