如果条件不在运算符'相等'上工作并且在赋值运算符上工作

时间:2014-04-16 16:10:45

标签: php

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

2 个答案:

答案 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){