我设计了一个使用HTML和PHP的客户表单。但现在的问题是,验证表单。我希望像asp.net页面那样进行验证:只要文本框控件失去焦点,验证器就会显示状态。使用PHP动态验证HTML表单
这是可能的PHP?
我设计了一个使用HTML和PHP的客户表单。但现在的问题是,验证表单。我希望像asp.net页面那样进行验证:只要文本框控件失去焦点,验证器就会显示状态。使用PHP动态验证HTML表单
这是可能的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脚本打印出“已通过”,那么一切都很好,但如果没有,则会删除该值并提醒用户。
$.ajax({
type:'post',
data:'value='+$('#inputFieldID').val();
url:'path-to-validate-script.php',
success:function(msg){
if (msg != "passed") {
$('#inputFieldID').val('');
alert("Invalid Input!");
}
}
});
以下是关于验证的事情:客户端验证看起来不错,可以非常快地进行设置。这对用户更好,因为它可以“做更多”来指示问题(vs只是没有JavaScript的PHP)
但是,这是一个大,但它不是万无一失的。你关掉了Javascript,你的验证在水里死了。依赖于任何JavaScript或jQuery对您的数据输入不负责任......所以,您将不得不依靠混合解决方案 - 前端和后端。并且不要忘记数据消毒,要么......或者您最终会以little Bobby Tables作为您的网站用户之一。
我公司确实将表格作为其业务的核心部分。如果我要做自定义验证,我会发疯,把自己从屋顶上抛下。我为use this script节省时间....它是快速,有效,和万无一失,只需一行或两个代码,包括在课堂上的几个字,使其工作。再次,这只是双管齐下混合方法的前端部分。
在后端,当您提交时,如果验证失败,只需要让函数返回问题输入,并指示回UI以便可以引发警告。在我的应用程序中,我在最初隐藏的表单顶部有一个集中的“问题”警报区域,它捕获PHP发出的所有后端验证问题并将它们显示在一个位置。如果他们花时间来覆盖我的前端验证,他们应该不得不通过一个巨大的错误信息,我想。
您的回答完全忽略了您无法单独依靠前端验证的事实。关掉JavaScript,你的解决方案就成了一块无用的代码。是的,用于前端验证的Javascript,但你只给出了一半的答案。 – bpeterson76