php布尔运算导致500错误


php boolean operation causing 500 error

我正在使用Codeigniter Framework

我在控制器中,代码如下:

if(isset($_POST['field']) && !empty($_POST['field']) && 
isset($_POST['field2']) && !empty($_POST['field2'])) {
    if(isset($_POST['field3']) && !empty($_POST['field3']))
    //whatever
    else
    //whatever
} else {//whatever}

上面的代码抛出了一个500错误(我正在使用jquery将post数据发送到页面)

$.ajax({   
    url: url,   
    type: "POST",
    cache: false,
    contentType: false,
    processData: false,
    data : form,
    success: function(data){
        console.log(data);
        checkResults(data);
    },
    error: function(xhr, textStatus, error){
       alert("Fail");
       alert(textStatus);
       alert(xhr);
       alert(error);
    }
});

jquery运行良好,这就是它变得非常奇怪的

第一组验证(检查字段1和字段2)按预期工作,但是检查字段3会得到所有错误的

这会抛出500个错误的

 if(isset($_POST['field3']) && !empty($_POST['field3']))

这不是

 if(isset($_POST['field3']))

这不是

 if(isset($_POST['field3']) && empty($_POST['field3']))

这是

 if(isset($_POST['field3']) && (empty($_POST['field3']) == 0))

这是

 if(isset($_POST['field3']) && ($_POST['field3'] == ""))

我搞不清楚,视图中所有字段都有相同的格式:

<input type="text" id="<<ID>>" name="<<NAME>" value="" />

唯一不同的是,field3是由jquery使用侦听器传播的

一开始它是用jquery.hide()隐藏的,然后是一个简单的监听器:

$("#fieldListener").change(function() {
if(this.value == "") 
{
    $("#field3-id").hide("slow");
    $("#field3").removeClass("required");
    $("#field3").val("");
} else {
    $("#field3-id").show("slow");
    $("#field3").addClass("required");
}

您不应该将$_POST与codeigniter一起使用。http://ellislab.com/codeigniter/user-guide/libraries/input.html

如果您想了解更多信息,请阅读文档:)