使用PHP实现HTML表单的动态验证


Dynamic Validation of a HTML Forms using PHP

我使用HTML和PHP设计了一个客户表单。但现在的问题是,验证表单。我想要像asp.net页面那样进行验证:只要文本框控件失去焦点,验证器就会显示状态。

是可能的在php?

不,如果没有Javascript支持,这是不可能的,即使是ASP。. NET使用Javascript来帮助验证表单中的输入字段。

你正在寻找一个AJAX解决方案,或JS验证客户端+ PHP服务器端验证(总是需要做客户端+服务器验证)。

不,客户端验证不是纯PHP, PHP是服务器端验证。

当您说希望在"文本框失去焦点时"进行验证时,这意味着您的意图是进行客户端验证。我强烈建议你不要这样做,因为客户端"任何东西"都不应该被信任。所有的验证都应该在服务器端完成。

现在,您可能想使用一些jquery来增强表单的"用户体验",通过在浏览器中进行验证,但毫无疑问,这只是为了展示。

下面的代码将引导您找到正确的方向

// $clean_post: Assumes you already sanitized for SQL injection attack vectors and
// that you have already ensured proper character encoding.
// Example is for a hypothetical first name
if( empty( $clean_post[ 'first_name' ] ) )
{
    // Do something to let the user know that first name is required
}
else
{
    // They entered a first name, this is good. Now check for
    // invalid characters. We will allow A-Z , backtick, apostrophe, space and dash
    if( preg_match( "/[^a-zA-Z `''-]/" , $clean_post[ 'first_name' ] ) )
    {
        // Do something because they have illegal characters.
    }
}

您需要使用Javascript/JQuery来实时验证。如果必须使用PHP验证输入,则可以使用AJAX调用PHP脚本来验证输入和返回。下面是AJAX调用的样子,它从输入框中获取值并将其传递给PHP脚本。如果PHP脚本打印"passed"则一切正常,但如果没有,则删除该值并警告用户。

$.ajax({
    type:'post',
    data:'value='+$('#inputFieldID').val();
    url:'path-to-validate-script.php',
    success:function(msg){
        if (msg != "passed") {
            $('#inputFieldID').val('');
            alert("Invalid Input!");
        }
    }
});

关于验证的事情是:客户端验证看起来很好,并且可以非常快速地设置。这对用户来说更好,因为它可以"做更多"来指出问题(而不是只有php没有javascript)

但是,这是一个很大的但是,它不是万无一失的。关闭Javascript后,验证就会陷入僵局。依赖任何javascript或jQuery是不负责任的数据输入....因此,您将不得不依赖于混合解决方案——前端和后端。也不要忘记数据清理,....否则你的网站最终会有一个小Bobby Tables作为你的用户。

我的公司做表格是其业务的核心部分。如果我要做自定义验证,我会发疯,从屋顶上摔下去。我使用这个脚本是为了节省时间....它快速、有效、简单,只需要一两行代码和几个单词就可以了。同样,这只是双管齐下的混合方法的前端部分。

在后端,当你提交时,你只需要让你的函数在验证失败时返回问题输入,并返回给UI,这样它就可以抛出警告。在我的应用程序中,我有一个集中的"问题"警报区域在表单的顶部,最初是隐藏的,从PHP捕获所有后端验证问题,并显示在一个地方。如果他们花时间去覆盖我的前端验证,我想他们就应该去处理一个巨大的错误消息。