如果条件不适用于操作员';等于';以及操作赋值运算符


If condition not working on operator 'equal' and working on assignment operator

你好,我有一个奇怪的问题,我的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在里面,所以这不会是问题所在。欢迎任何帮助。非常感谢。

$POST['sendmail'] == 1

应该是:

$_POST['sendmail'] == 1

做作业而不是比较不是你想要的。

$_POST['sendmail'] = 1

truthy,因为所分配的值(1)是truthy。如果你改为if ($var = 0),它将永远不会通过。

您还应该考虑使用===。如果您知道这两个变量的类型,这就有效了。$_POST输入总是字符串,因此:

$_POST["sendmail"] === "1"
if ($POST['sendmail'] == 1){

应该是

if ($_POST['sendmail'] == 1){