我使用HTML和PHP设计了一个客户表单。但现在的问题是,验证表格。我希望验证像asp.net页面那样:只要文本框控件失去焦点,验证器就会显示状态。
这可能在PHP吗?
答案 0 :(得分:1)
如果没有Javascript支持,这是不可能的,即使ASP.NET使用Javascript来帮助验证表单中的输入字段。
您正在寻找AJAX解决方案,或JS验证客户端+ PHP服务器端验证(始终需要进行客户端+服务器验证)。
但不,没有用于客户端验证的纯PHP,PHP是服务器端。
答案 1 :(得分:0)
当您说您希望验证发生时“当文本框失去焦点时”意味着您的意图是进行客户端验证。我强烈建议不要这样做,因为客户端“任何事情”都不应该被信任。所有验证都应该在服务器端完成。
现在,您可能希望使用一些jquery来通过在浏览器中进行验证来增强表单的“用户体验”,但不要搞错,这仅适用于show。
以下代码应引导您朝着正确的方向前进
// $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.
}
}
答案 2 :(得分:0)
您需要使用Javascript / JQuery进行实时验证。如果必须使用PHP来验证输入,则可以使用对验证输入和返回的PHP脚本的AJAX调用。下面是类似于AJAX调用的内容,它从输入框中获取值并将其传递给PHP脚本。如果PHP脚本打印“传递”,那么一切都很好,但如果没有,那么它会删除该值并提醒用户。
$.ajax({
type:'post',
data:'value='+$('#inputFieldID').val();
url:'path-to-validate-script.php',
success:function(msg){
if (msg != "passed") {
$('#inputFieldID').val('');
alert("Invalid Input!");
}
}
});
答案 3 :(得分:0)
以下是有关验证的内容:客户端验证看起来不错,可以非常快速地进行设置。这对用户来说更好,因为它可以“做更多”来表示问题(仅针对没有javascript的php)
但是,这是一个很大的但是,它不是万无一失的。你关闭Javascript,你的验证已经死了。依赖于任何javascript或jQuery对您的数据输入都是不负责任的....因此,您将不得不依赖混合解决方案 - 前端和后端。并且不要忘记数据清理......或者您最终会以little Bobby Tables作为您的网站用户之一。
我的公司将表格作为其业务的核心部分。如果我要进行自定义验证,我会发疯并把自己扔掉屋顶。我use this script节省时间....它快速,有效,万无一失,只需要一行或两行代码以及类中的几个单词来使其工作。同样,这只是双管齐下混合方法的前端部分。
在后端,当你提交时,你必须让你的函数返回问题输入,如果验证失败并指示回UI,以便它可以发出警告。在我的应用程序中,我在最初隐藏的表单顶部有一个集中的“问题”警报区域,可以捕获PHP中的所有后端验证问题,并将它们显示在一个位置。如果他们花时间覆盖我的前端验证,他们应该不得不趟过一个巨大的错误信息,我想。