这是一个相当开放的问题,但是我想知道在注册表单中验证用户输入的推荐方法是什么,并在尝试之前向用户转发需要更改的信息(如果有的话)。再次提交。现在,我的表单设置有一些HTML属性,如maxlength,但显然不可靠。所以在PHP代码中,我有过滤掉超出长度的字符串,清理输入等等。
但是,如果给出的输入无效,我将PHP代码重定向到注册页面,注册页面只是正常显示,没有用户以前的输入,也没有任何需要更改的指示。
这显然是不可接受的,所以我需要知道我是否应该使用JavaScript作为验证的中间手段并显示指标,或者我是否应该使用会话变量来中继先前的输入,并表示哪些字段显示错误。或者,完全不同的东西。
希望我的问题很清楚,所有的帮助都非常感谢!
编辑:禁用JavaScript的用户是否应该考虑这种类型的现实问题?
答案 0 :(得分:2)
你的答案很简单:
的 BOTH 强> 的
首先,在客户端进行初始验证。 这不是关于进行用户检查/验证/权限级别(至少还没有)。 在您使用AJAX调用来检查某人是否正在尝试使用已注册的电子邮件地址创建帐户,或者那种“安全”(清理......所有内容)时,可能会出现例外情况。检查。
这是关于:“这个字段是否通过了白痴检查”。
这就是JS验证应该是什么。
如果它失败了,在场上设置css类,让人们在视觉上知道某些事情已经发生了。查看css :before
和:after
伪选择器,它们可以让您在样式化之前/之后添加文本或图像(在这种情况下为input
)
input.valid:before { content : url("checkmark.png") }
input.invalid:after { content : url("big-red-x.png") }
您可以动态添加工具提示或消息横幅,以提供有关错误的用户友好信息。
所有这些东西都可以让那些知道如何提交POST请求的人使用其中一个开发友好的网络解决方案(或者只是真正无聊的人,他们将使用他们自己的脚本服务器,如果您的网站是开放的。)
这就是为什么你仍然需要使用PHP进行验证。
这也是您清理 一切 (或使用PDO作为数据库访问层,并使用其预先清理的解决方案)的时间。 然后你就可以开始向你的数据库寻找权威和诸如此类的东西了。
如果在PHP方面出现错误,请将它们转储回已经存在的页面,并将旧值填入。
从那里,触发JS验证错误,带有一些服务器端消息...... ...并再次运行JS验证,以获取字段中的错误 ...(对于非JS人员,虽然你可以在页面加载中隐藏/删除它)包含一个静态横幅,用于保存你在PHP中遇到的错误列表。
这可以达到您想要的深度,并且您可以通过一系列AJAX调用来完成所有这些操作,将PHP错误返回到错误数组中,返回到页面,进行解析或者应用于不正确的领域,或者放在某个地方的中央横幅......
就像你说的,这是一个非常开放的问题。
从客户的角度来说,你的目标是高层次的, 1.当出现错误时,提供响应(/即时)用户友好的反馈 2.使反馈简洁,明确,可操作 3.尽可能多地做而不会让我重写所有内容,或者在页面之间来回导航 - 最终,梦想是在填写表单和在我试图访问的内容之间进行0页更改