2011-05-30 73 views
2

请注意,我刚开始学习php。我已经通过了几个不同的多日教程,现在我正在尝试自己编写一个小邮件列表脚本。这个,我敢肯定,这是一个简单的问题/答案,但我没有想出如何提出问题的方式已经在谷歌上找到了任何结果。从复选框返回true/false值,false时出错

我有一个名为“htemail”复选框,当我把它发送到脚本我有这样的代码:

if(!$_POST['htemail']){ 
    $usehtml = 0; 
}else{ 
    $usehtml = 1; 
} 

echo($usehtml); 

如果复选框被选中,则返回1,但如果它不是,我得到以下错误:

Notice: Undefined index: htemail in C:\wamp\www\mailing list\createUser.php on line 7 Call Stack #TimeMemoryFunctionLocation 10.0004673576{main}()..\createUser.php:0 0.

我认为做的第一件事就是到各地向后翻转的代码,以便它检查检查是否存在等第一(我不知道为什么我认为这将有助于)

在此先感谢您的任何答案。

回答

4

如果未检查,则浏览器可能不会包含在发布数据中。使用功能isset进行检查。如果没有设置,意味着它没有被检查,反过来是不正确的,如果设置,可能仍然是错误的。

if(isset($_POST['htemail']) && $_POST['htemail'] == "Value"){ //where "Value" is the 
      //same string given in the HTML form, as value attribute the the checkbox input 
    $usehtml = 1; 
}else{ 
    $usehtml = 0; 
} 

至于isset替代你可以使用array_key_exists

2

你想要的是检测阵列成员的存在,然后检查它的内容:

$usehtml = 0; 

if (isset($_POST['htemail']) && strtolower($_POST['htemail']) == 'yes'){ 
    $usehtml = 1; 
} 

echo($usehtml); 

isset()检查,以确保数组成员存在,在这种情况下,您可以检查以确保值的计算结果为您所需的值。

此外,上面我已经命令评估默认为一个值(0),然后改变为另一个值,如果另一个变量存在。这样做和if/else语句之间确实没有太大区别,但我认为阅读和理解更清晰。