包含特定文件的理想方式

时间:2013-04-11 14:31:35

标签: php include

我一直试图找到一种方法来做到这一点,但似乎无法想到干净,简单的方法。当用户提交表单(比如注册表单)时,表单验证如下:

   $('form').submit(function(e) {
        e.preventDefault();
        var $formId = $(this).attr('id');
        $.ajax({
            url : "validation_check.php",
            type : "POST",
            data : $("#" + $formId).serialize(),
            success : function(data) {
                $('#' + $formId + ' :input.form_errors').removeClass('form_errors');
                data = $.parseJSON(data);
                if (jQuery.isEmptyObject(data)) {
                    document.forms[$formId].submit();
                } else {
                    $.each(data, function(i, item) {
                        $('#' + $formId + ' :input#' + i).addClass('form_errors');
                    });
                }
            }
        });
    });

validation_check.php只是这样做:

echo json_encode(validate($_POST));

最后,validate()函数

$errors = array();

// need to only include if on the registration page
include_once 'register.val.php';

if (isset($data['email']) && ($data['email'] == '' || filter_var($data['email'], FILTER_VALIDATE_EMAIL) == false)) {
        $errors['email'] = 'Not a valid email';
}

return $errors;

include_once 'register.val.php';只包含一些if语句,如上面的电子邮件。我的问题是,如何确定我想要包含哪个文件?如果我正在注册,那么我只想包含register.val.php。如果我保存信息,我只想包含edit.val.php。有什么想法以干净利落的方式做到这一点吗?

1 个答案:

答案 0 :(得分:1)

将$ _GET传递给名为action的脚本,其值为register或edit:

validation_check.php?action=register

然后您可以执行if(或者如果要添加更多操作,则可以切换)

if($_GET['action'] === 'register')
    include_once('register.val.php');
else
    include_once('edit.val.php');

如果您愿意,也可以通过邮寄方式发送行动。