我有一个表单:
<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()
时,它将返回布尔值true
或false
$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
用于检查变量/数组元素是否初始化。它将返回true
或false
。
// 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 );
}