你好,我有一个奇怪的问题,我的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){