PHP邮件表单POST返回true而不是value


PHP mail form POST returns true instead of value?

我有一个表单:

<form action="processForm.php" method="POST" class="contactForm">
  <select class="support-select" name="contactPerson" required="required">
    <option selected="selected" disabled="disabled">Select Your Contact</option>
    <option value="james">James Jones</option>
    <option value="marsha">Marsha May</option>
  </select>

在processform。php中我有:

$contactPerson = isset($_POST['contactPerson']);
$success = mail( $recipient, EMAIL_SUBJECT, "NAME: $senderName'nEMAIL: $senderEmail'nCONTACT: $contactPerson'nMESSAGE: $message", $headers );

我很确定$_POST是我遇到麻烦的地方,因为它只是返回1或0如果选择。我不需要知道真/假,我只需要值和/或文本。

isset()返回布尔值either true or false

来源

所以你试图给$contactPerson赋一个布尔值。

应该使用

$contactPerson = isset($_POST['contactPerson'])?$_POST['contactPerson']:FALSE;
if($contactPerson)
{
 //send mail
}

更改$contactPerson = $_POST['contactPerson'];,删除isset,它将只返回一个布尔值

您可以在这里使用三元运算符,因为当您使用isset()时,它将返回布尔值truefalse

$contactPerson = (isset($_POST['contactPerson']) ? $_POST['contactPerson'] : '');

三元运算符不过是if条件的简写,所以上面代码的意思是,如果设置了$_POST['contactPerson'],则将值赋给$contactPerson,否则赋空值

这是因为$contactPerson = isset($_POST['contactPerson']); $contactPerson只会得到True或false而不是Email。

尝试三元操作符:

$contactPerson = (isset($_POST['contactPerson']))? $_POST['contactPerson'] : 'default mail';

isset用于检查变量/数组元素是否初始化。它将返回truefalse

// execute following code if $_POST contains a parameter
// for contactPerson. the isset check makes sure that
if (isset($_POST['contactPerson'])) {
    // here is the main difference from your code,
    // you had used an unnecessary isset
    $contactPerson = $_POST['contactPerson']; 
    $success = mail( $recipient, EMAIL_SUBJECT, "NAME: $senderName'nEMAIL: $senderEmail'nCONTACT: $contactPerson'nMESSAGE: $message", $headers );
}