确定我正在制作一个应用程序,我将告诉我如何处理错误逻辑并在我的应用程序中显示
// 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>';
}
}
然后我在html的上方用error_display($errors);
显示它们,
有更好的方法吗?
感谢您抽出时间帮助
Adam Ramadhan
答案 0 :(得分:1)
可能不是最好的答案,但我做了一个稍微懒惰的方法,对我来说很有用。我只是使用JavaScript进行错误报告,但在数据库更改之前进行数据检查。因此,如果恶意用户想要绕过我仍然被覆盖的任何东西,那么表单仍然看起来不错。还存在用户未启用JavaScript的问题。对于这些用户,我简单地告诉他们需要它们。让我的生活更轻松。
答案 1 :(得分:1)
如上所述,$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;
}
}
如果你真的需要拆分_NULL和_NOT_VALID测试,显然你需要一个更好的描述。我个人会跳过这个。但也许你的验证类可以处理这个问题。制作一个verify_fields_not_empty()方法和第二个test_valid_format($ per_list)。您可能需要一种更聪明的方法将字段名称映射到验证方法,但这只是将其抽象出来的问题。
但更重要的是,您可以将$error[]
集合调整到一个中心位置。但我不确定是否需要它。您的错误数组已经可用于打印和日志记录。只有当第二个应用程序模块依赖于那里的对象格式时...