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

时间:2014-07-23 05:20:16

标签: php forms post

我有表格:

<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。我不需要知道真/假我需要价值和/或文字。我会满足于价值。

5 个答案:

答案 0 :(得分:2)

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

source

所以你试图将一个bolean值赋给$contactPerson

相反,你应该使用

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

if($contactPerson)
{
 //send mail
}

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

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

三元运算符只是if条件的简写,所以上面的代码表示,如果设置了$_POST['contactPerson'],则将值赋给$contactPerson else指定空白值。

答案 3 :(得分:1)

这是因为$contactPerson = isset($_POST['contactPerson']); $contactPerson只有真或假而不是电子邮件。

尝试使用三元运算符:

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

答案 4 :(得分:1)

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 );
}