我有表格:
<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。我不需要知道真/假我需要价值和/或文字。我会满足于价值。
答案 0 :(得分:2)
isset()
返回布尔值either true or false
所以你试图将一个bolean值赋给$contactPerson
。
相反,你应该使用
$contactPerson = isset($_POST['contactPerson'])?$_POST['contactPerson']:FALSE;
if($contactPerson)
{
//send mail
}
答案 1 :(得分:1)
更改$contactPerson = $_POST['contactPerson'];
,删除isset它将返回仅布尔值
答案 2 :(得分:1)
您可以在此处使用三元运算符,因为当您使用isset()
时,它将返回布尔值true
或false
$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
用于检查变量/数组元素是否已初始化。它将返回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 );
}