使用php显示提交后错误消息的逻辑方法 //处理单独的表单分区帖子 //-->派别名称 如果(isset($_POST['派系名称]])){ $unsani_派系_名称=$_职位['派系]; $new_partition_name=str_replace(“,”,“,$unsani_partition_name”); $partition\u name=mysql\u real\u escape\u字符串($new\u partition\u name); $partition_name=preg_replace('/\s\s+/','$partition_name);//去除多余的空白 $partition\u name=stripslashes($partition\u name);//从name中删除斜杠 //除去特殊字符,除了:&$美元(^-) $partition\u name=preg\u replace('/[^a-z0-9\s&$\^\(\)-]/i',''.$partition\u name); $string\u length=strlen($section\u name); 如果($string_length20){ echo'错误:属性名称必须介于1-20个字符之间。'; }否则{ $sql=mysql\u查询(“选择“.TBL\u USERPROPBANKS.”其中prop\u name='$prop\u name'”; $num\u rows=mysql\u num\u rows($sql); 如果($num_rows>0){ echo'错误:存在同名银行'; }否则{ mysql_查询(“UPDATE”.TBL_USERPROPBANKS.”设置prop_name='$prop_name',其中prop_id='$bankid'); 标题(“位置:bank_cp.php?bankid=“.$bankid.”§ion=settings”); } }

使用php显示提交后错误消息的逻辑方法 //处理单独的表单分区帖子 //-->派别名称 如果(isset($_POST['派系名称]])){ $unsani_派系_名称=$_职位['派系]; $new_partition_name=str_replace(“,”,“,$unsani_partition_name”); $partition\u name=mysql\u real\u escape\u字符串($new\u partition\u name); $partition_name=preg_replace('/\s\s+/','$partition_name);//去除多余的空白 $partition\u name=stripslashes($partition\u name);//从name中删除斜杠 //除去特殊字符,除了:&$美元(^-) $partition\u name=preg\u replace('/[^a-z0-9\s&$\^\(\)-]/i',''.$partition\u name); $string\u length=strlen($section\u name); 如果($string_length20){ echo'错误:属性名称必须介于1-20个字符之间。'; }否则{ $sql=mysql\u查询(“选择“.TBL\u USERPROPBANKS.”其中prop\u name='$prop\u name'”; $num\u rows=mysql\u num\u rows($sql); 如果($num_rows>0){ echo'错误:存在同名银行'; }否则{ mysql_查询(“UPDATE”.TBL_USERPROPBANKS.”设置prop_name='$prop_name',其中prop_id='$bankid'); 标题(“位置:bank_cp.php?bankid=“.$bankid.”§ion=settings”); } },php,logic,validation,Php,Logic,Validation,我正在用上面的方法解决我的错误。 (在你看来)最合乎逻辑的方式是什么: 计算错误的数量 并在我的版面的一个单独部分中回显/打印它们,以便在列表中显示每个错误消息 目前我所能想到的就是将空值分配给唯一的变量,如果它不符合我的验证要求,则用唯一的错误消息填充它(将有20多个不同的错误).对此有什么想法吗?我会创建一个空数组,将错误推送到该数组上,然后简单地从中生成一个字符串并显示它 //deal with individual form section posts //-->Faction N

我正在用上面的方法解决我的错误。 (在你看来)最合乎逻辑的方式是什么:

  • 计算错误的数量
  • 并在我的版面的一个单独部分中回显/打印它们,以便在列表中显示每个错误消息

  • 目前我所能想到的就是将空值分配给唯一的变量,如果它不符合我的验证要求,则用唯一的错误消息填充它(将有20多个不同的错误).对此有什么想法吗?

    我会创建一个空数组,将错误推送到该数组上,然后简单地从中生成一个字符串并显示它

    //deal with individual form section posts
    //-->Faction Name
    if(isset($_POST['factionname'])){
        $unsani_faction_name = $_POST['faction'];
        $new_faction_name = str_replace(",", "", $unsani_faction_name);
        $faction_name = mysql_real_escape_string($new_faction_name);
        $faction_name = preg_replace('/\s\s+/', ' ', $faction_name);//strips excess white space
        $faction_name = stripslashes($faction_name);//strips slashes from name
    
        //remove special chars except: "& $ £ ^ - ( )"
        $faction_name = preg_replace('/[^a-z0-9\s£&$\^\(\)-]/i', '', $faction_name);  
        $string_length = strlen($faction_name);
    
        if($string_length < 0 || $string_length > 20) { 
            echo '<strong>Error:</strong> Property name needs to be between 1-20 characters.&nbsp;'; 
        }else { 
            $sql = mysql_query("SELECT * FROM ".TBL_USERPROPBANKS." WHERE prop_name='$prop_name'"); 
            $num_rows = mysql_num_rows($sql);
            if ($num_rows > 0) { 
                echo '<strong>Error:</strong> Bank with the same name in existance.&nbsp;'; 
            }else {  
                mysql_query("UPDATE ".TBL_USERPROPBANKS." SET prop_name='$prop_name' WHERE prop_id='$bankid'"); 
                header("Location: bank_cp.php?bankid=".$bankid."&section=settings");
            }
        }
    
    $errors=array();
    ...
    如果($string_length<0 | |$string_length>20){
    $errors[]='错误:属性名称必须介于1-20个字符之间。';
    }
    ...
    如果($num_rows>0){
    $errors[]='错误:存在同名银行';
    }
    //在显示错误的地方放低
    回波内爆(“
    ”,$errors);
    这与你的问题无关,但是你从派别名称中删除字符的借口是什么?如果是用户提供的东西,并显示给他们,你应该考虑允许任何和所有字符在没有人为限制的情况下使用。我不希望用户使用我不想显示的字符。网站?它向网站上的所有用户显示。我应该允许所有字符吗?我将检查此方法!我将在对其进行一点操作后再与您联系:)经过测试,符合我的喜好。答案已接受。但是,一个快速更改,“内爆”只接受两个参数。我如何让某些东西像假设的:echo一样工作内爆(
  • ,$errors,
  • );?
    echo'
  • 。内爆(“
  • ,$errors)。“
  • 当然,如果有变化,可以在数组元素的根上进行迭代。
    $errors = array();
    ...
    if($string_length < 0 || $string_length > 20) {
      $errors[] = '<strong>Error:</strong> Property name needs to be  between 1-20 characters.&nbsp;';
    }
    ...
    if($num_rows > 0) {
      $errors[] = '<strong>Error:</strong> Bank with the same name in existance.&nbsp;';
    }
    
    // lower in a place you display the errors
    echo implode('<br />', $errors);