你好我有一个奇怪的问题,我的If语句不起作用。我正在进行简单的用户注册,并想检查变量'sendmail'是否等于1,如果不发送电子邮件则发送电子邮件。我缩短了邮件功能代码以便更好地理解:
$usr->storeFormValues( $_POST );
/* check if the password is the same */
if( $_POST['password'] == $_POST['conpassword'] && $_POST['email'] == $_POST['emailconfirm'] ) {
/* Check if the sendmail variable is equal to 1 */
if ($POST['sendmail'] == 1){
/* send e-mail function the */
mail($to,$email_subject,nl2br($email_body),$headers);
}
echo $usr->register($_POST);
所以问题是这种情况if ($POST['sendmail'] == 1)
的条件不起作用,而且它没有发送电子邮件。如果我这样写,如果($POST['sendmail'] = 1)
这种方式正常工作,无论sendmail中的变量有什么参数,它总是发送电子邮件。
这是sendmail
即将到来的地方
<select name="sendmail">
<option value="0">No</option>
<option value="1">Yes</option>
</select>
我检查了post数组,变量sendmail在里面,所以这不是问题所在。 任何帮助都将非常受欢迎。谢谢。
答案 0 :(得分:2)
$POST['sendmail'] == 1
应该是:
$_POST['sendmail'] == 1
执行作业而不是比较不是你想要的。
$_POST['sendmail'] = 1
是 truthy ,因为分配的值(1
)是真实的。如果你改为if ($var = 0)
,它将永远不会通过。
您还应该考虑使用===
。如果您知道两个变量的类型,则此方法有效。 $_POST
输入始终是字符串,因此:
$_POST["sendmail"] === "1"
答案 1 :(得分:2)
if ($POST['sendmail'] == 1){
应该是
if ($_POST['sendmail'] == 1){