代码之家  ›  专栏  ›  技术社区  ›  Adam Ramadhan

错误逻辑和php显示?

  •  1
  • Adam Ramadhan  · 技术社区  · 15 年前

    好的,我在做一个应用程序,我将告诉我如何做错误逻辑和显示在我的应用程序

    // ERROR CHECK
    if ( !empty( $user_status ) )
        $errors[] = language( 'ERROR_USERNAME_USED' );
    
    if ( empty( $_POST['username'] ) )
        $errors[] = language( 'ERROR_USERNAME_NULL' );
    
    if ( !( $validation->valid_uid( $_POST['username'] ) ) && !empty( $_POST['username'] ) )
        $errors[] = language( 'ERROR_USER_NAME_NOT_VALID' );
    
    if ( empty( $_POST['password'] ) )
        $errors[] = language( 'ERROR_USER_PASS_NULL' );
    
    if ( empty( $_POST['name'] ) )
        $errors[] = language( 'ERROR_USER_REALNAME_NULL' );
    
    if ( !( $validation->valid_name( $_POST['name'] ) ) && !empty( $_POST['name'] ) )
        $errors[] = language( 'ERROR_USER_REALNAME_NOT_VALID' );
    
    if ( empty( $_POST['company'] ) )
        $errors[] = language( 'ERROR_COMPANY_NAME_NULL' );
    
    if ( !( $validation->valid_company_name( $_POST['company'] ) ) && !empty( $_POST['company'] ) )
        $errors[] = language( 'ERROR_COMPANY_NAME_NOT_VALID' );
    
    if ( empty( $_POST['phone'] ) )
        $errors[] = language( 'ERROR_USER_PHONE_NULL' );
    
    if ( !( $validation->valid_phone( $_POST['phone'] ) ) && !empty( $_POST['phone'] ) )
        $errors[] = language( 'ERROR_USER_PHONE_NOT_VALID' );
    
    // Database
    if ( !sizeof( $errors ) ) {
        // do something here.
        }
    

    这是我的功能

    $errors = array(); 
    function error_display($handle, $title = null, $type = null) 
    {
        if (sizeof($handle)) 
        {
            echo '<div id="red-error-box"><ul><h3>' . count($handle) . ' ' . $title . ' Error!</h3>';
    
            if (is_null($type)) {
                foreach ($handle as $key => $value) 
                {
                    echo '<li class="error-list">' . $value . '</li>';
                }
            }
            if ($type == 1)
            {
                 echo '<li class="error-list">' . $handle[0] . '</li>';
            }
    
            echo '</div>';
        }
    }
    

    然后我用 error_display($errors); 在html的上面,

    有更好的办法吗?

    谢谢你花时间帮忙

    亚当·拉马丹

    2 回复  |  直到 15 年前
        1
  •  1
  •   BenMorel Manish Pradhan    12 年前

    如前所述 $error[] 列表似乎是个不错的方法。但正如示例所示,您可以将代码简化为验证列表和循环:

    $fields = array(
         "username" => language( 'ERROR_USERNAME_NULL' ),
         "password" => language( 'ERROR_USER_PASS_NULL' ),
         "name" => language( 'ERROR_USER_REALNAME_NOT_VALID' ),
         ...
    );
    
    foreach ($fields as $field=>$error_msg) {
    
         if (empty($_POST[$field])
          || method_exists($validation, "valid_$field")
          && !$validation->{"valid_$field"}($_POST["field"]))
         {
              $errors[] = $error_msg;
         }
    }
    

    显然,如果您真的需要拆分空测试和无效测试,则需要更好的描述。我个人会跳过这个。但也许你的验证类可以处理这个问题。使一个verify_fields_not_empty()方法和第二个test_valid_format($per_list)。您可能需要一种更聪明的方法来将字段名映射到验证方法上,但这只是抽象它的问题。

    但更重要的是你可以适应 $error[] 在中心位置收集。但我不确定是否有必要。错误数组已可用于打印 和 登录中。只有当第二个应用程序模块依赖于那里的对象格式时。。。

        2
  •  1
  •   Ryein Cardale Goddard    15 年前

    也许不是最好的答案,但我做了一个稍微懒一点的方法,这对我很有用。我只使用JavaScript进行错误报告,但在数据库更改之前要进行数据检查。所以,如果恶意用户想规避任何我仍然被涵盖,形式仍然好看的东西。还有一个问题是用户没有启用JavaScript。对于这些用户,我简单地让他们知道它的要求。让我的生活轻松多了。

    推荐文章