Php 注册表验证错误

Php 注册表验证错误,php,mysql,Php,Mysql,若我提交空白字段,它仍会将其添加到数据库中。我做了一个循环来检查是否一切正常,但它一直将其重定向到错误页面。我已经为此挣扎了将近两个小时,但找不到解决办法。 因为我可以发布2个以上的链接:尝试设置 不允许空值 在表的列属性中。可以在表设计期间完成,也可以在数据库中编辑表设计。 希望这有帮助。您正在使用empty()。 仅当NULL、false或不存在时返回false,而不是空字符串时返回false 您应该这样做: foreach($required as $post){ if ($_PO

若我提交空白字段,它仍会将其添加到数据库中。我做了一个循环来检查是否一切正常,但它一直将其重定向到错误页面。我已经为此挣扎了将近两个小时,但找不到解决办法。 因为我可以发布2个以上的链接:

尝试设置

不允许空值

在表的列属性中。可以在表设计期间完成,也可以在数据库中编辑表设计。 希望这有帮助。

您正在使用empty()。 仅当NULL、false或不存在时返回false,而不是空字符串时返回false

您应该这样做:

foreach($required as $post){
    if ($_POST[$post] == "") {
        die(header("refresh:0.5;url=error.php"));
    }
}
但是,我不知道为什么不把它放在整个代码块上,这样它只在表单提交时执行。那你就不必再检查了

if (isset($_POST)) { //or a specific $_POST variable if multiple submit paths
    //code here
}

此外,您应该编辑您的问题,以便在问题中包含相关代码,或者在将来,搜索者可能会发现您的pastebin链接不再有效。

我想您正在寻找类似

if(isset($_POST['field1']) && !$_POST['field1'] =="")
{
//your codes goes here

}
也许你做过类似的事情

<input type=text name=name1 value ="" />

如果是这样,请像这样做

<input type=text name=name1 />


这不会将name1发送到您的页面

我认为无论如何,您都应该对空字段(如jQuery函数)进行一些客户端验证:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script type="text/javascript">
    $(function(){
        $("form").submit(function(){
            if($("#first_name").val() == ''){
                alert("First name cann't be empty");
                return false;
            }else if($("#last_name").val() == ''){
                alert("Last name cann't be empty");
                return false;   
            }else if($("#email").val() == ''){
                alert("Email cann't be empty");
                return false;   
            }else if($("#password").val() == ''){
                alert("Password name cann't be empty");
                return false;   
            }            
        });
    });                
</script>

$(函数(){
$(“表格”)。提交(函数(){
if($(“#名字”).val()=''){
警报(“名字不能为空”);
返回false;
}else if($(“#姓氏”).val()=''){
警报(“姓氏不能为空”);
返回false;
}else if($(“#email”).val()=''){
警报(“电子邮件不能为空”);
返回false;
}else if($(“#密码”).val()=''){
警报(“密码名称不能为空”);
返回false;
}            
});
});                

您试图获取不存在的$\u POST数组上的索引,因此请更正$required数组,并将字段名称而不是变量名称放在其中,就像process.php中所述:

$required = array('first_name','last_name','password','email');
foreach($required as $post){
    if($post = empty($_POST[$post]) || $_POST[$post] == ""){
        die(header("refresh:0.5;url=error.php"));
    } elseif($required != empty($_POST)) {
        echo "";
    }
}
这与值属性无关,但他试图在$\u POST数组上获取一个_undefined u索引,这就是为什么他对空数据的测试始终为true,并重定向到error.php页面,不管他在表单中以值的形式输入什么。