首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误逻辑和显示在php?

错误逻辑和显示在php?
EN

Stack Overflow用户
提问于 2010-11-14 14:43:13
回答 2查看 142关注 0票数 1

好的,我创建了一个应用程序,我将讲述如何在应用程序中执行错误逻辑和显示

代码语言:javascript
复制
// 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.
    }

下面是我的函数

代码语言:javascript
复制
$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的上方显示它们,

有没有更好的方法来做这件事?

感谢您抽出时间来帮忙

亚当·拉马丹

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-11-16 00:51:56

如上所述,$error[]列表似乎是一个很好的方法。但仅作为示例,您可以将代码简化为验证列表和循环:

代码语言:javascript
复制
$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;
     }
}

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

但更重要的是,您可以在中心位置调整$error[]集合。不过,我不确定是否需要这样做。您的错误数组已经可以用于打印和日志记录。只有当第二个应用程序模块依赖于那里的对象格式时……

票数 1
EN

Stack Overflow用户

发布于 2010-11-14 14:57:28

可能不是最好的答案,但我做了一个稍微懒惰的方法,这个方法对我很有效。我只是使用JavaScript进行错误报告,但在数据库更改之前会进行数据检查。因此,如果恶意用户想要绕过任何东西,我仍然会被覆盖,并且表单看起来仍然很好。还有一个问题是用户没有启用JavaScript。对于这些用户,我简单地让他们知道这是必需的。让我的生活轻松多了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4176490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档