Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在没有脚本的情况下重新填充表单并显示错误的最佳方法是什么?_Php_Javascript_Noscript - Fatal编程技术网

Php 在没有脚本的情况下重新填充表单并显示错误的最佳方法是什么?

Php 在没有脚本的情况下重新填充表单并显示错误的最佳方法是什么?,php,javascript,noscript,Php,Javascript,Noscript,我正在构建一个应用程序,它使用ajax调用进行表单验证和其他一些操作,问题是我不喜欢在没有css的新页面上显示这些验证错误,并且表单在没有Javascript的情况下完全重置 我说的是十几个表单,所以,用户一遍又一遍地浏览表单会很烦人 我已经阅读了一些关于这个主题的答案,但是对于这样的情况,是否有一种特定的方法,一种最佳实践(更接近表单验证) 如果已经有答案,请道歉 编辑: 所有的验证都是在服务器端完成的,目前错误是在ajax的帮助下显示的。我想要的是一种方便的方法,用于在处理表单时发生错误时重

我正在构建一个应用程序,它使用ajax调用进行表单验证和其他一些操作,问题是我不喜欢在没有css的新页面上显示这些验证错误,并且表单在没有Javascript的情况下完全重置

我说的是十几个表单,所以,用户一遍又一遍地浏览表单会很烦人

我已经阅读了一些关于这个主题的答案,但是对于这样的情况,是否有一种特定的方法,一种最佳实践(更接近表单验证)

如果已经有答案,请道歉

编辑:


所有的验证都是在服务器端完成的,目前错误是在ajax的帮助下显示的。我想要的是一种方便的方法,用于在处理表单时发生错误时重新填充表单并在不使用javascript的情况下显示错误。

表单验证应该先在服务器上编写,然后在客户端上编写。无论如何,您都应该在服务器上进行验证。不要像表单验证那样依赖Ajax来完成对站点操作如此简单和关键的事情。使用不引人注目的脚本,可以防止默认表单提交,然后使用Ajax处理表单。否则,请允许提交通过并使用服务器生成的验证页面进行响应。

表单验证应先在服务器上编写,然后在客户端上编写。无论如何,您都应该在服务器上进行验证。不要像表单验证那样依赖Ajax来完成对站点操作如此简单和关键的事情。使用不引人注目的脚本,可以防止默认表单提交,然后使用Ajax处理表单。否则,允许提交通过并使用服务器生成的验证页面进行响应。

我不确定您的问题是否暗示您没有在服务器上进行验证-这将被视为一个巨大的安全漏洞,因为很明显,只需禁用Javascript就可以绕过表单。您每次都必须在服务器上进行验证,而客户端验证很容易做到

此外,当您使用一个像样的框架时,重新加载页面时让表单自行重置的“问题”变得毫无意义——在Python中,Django会在出现错误时自动重新填充表单。在PHP中,CakePHP和CodeIgniter也能做到这一点,我相信大多数好的框架都能做到这一点,因为它属于框架应该抽象掉的“常见任务”范畴

每当我不使用框架时,我就编写自己的小表单类来满足需要

编辑


我不知道你可以插入什么,你必须能够重新填充表单。你最好的办法是为它编写自己的小类,这应该不超过1小时。

我不确定你的问题是否暗示你没有在服务器上验证-这将被视为一个巨大的安全漏洞,因为很明显,只需禁用Javascript就可以绕过表单。您每次都必须在服务器上进行验证,而客户端验证很容易做到

此外,当您使用一个像样的框架时,重新加载页面时让表单自行重置的“问题”变得毫无意义——在Python中,Django会在出现错误时自动重新填充表单。在PHP中,CakePHP和CodeIgniter也能做到这一点,我相信大多数好的框架都能做到这一点,因为它属于框架应该抽象掉的“常见任务”范畴

每当我不使用框架时,我就编写自己的小表单类来满足需要

编辑


我不知道你可以插入什么,你必须能够重新填充表单。最好的办法是编写自己的小类,这应该不超过1小时。

在服务器端执行验证并重新填充表单

通过AJAX进行验证很好,但无法强制执行。因此,无论AJAX是否发生,都可以更有效地执行验证。我建议使用第二种方法来处理验证,并将JSON中的错误数组传回给使用javascript的用户。但是对于那些没有javascript的用户,验证工作的唯一方式是通过服务器端


不幸的是,在这方面你真的没有选择的余地。任何半途而废的程序员或firebug黑客都可以编辑你的javascript,分离钩子,绕过你试图在他这方面做的一切:偏执,在服务器端执行验证。

在服务器端执行验证,并重新填充表单

通过AJAX进行验证很好,但无法强制执行。因此,无论AJAX是否发生,都可以更有效地执行验证。我建议使用第二种方法来处理验证,并将JSON中的错误数组传回给使用javascript的用户。但是对于那些没有javascript的用户,验证工作的唯一方式是通过服务器端


不幸的是,在这方面你真的没有选择的余地。任何半途而废的程序员或firebug黑客都可以编辑你的javascript,分离钩子,绕过你试图在他这方面做的一切:偏执并在服务器端执行验证。

我通常做的是将所有错误字符串存储在会话变量的数组中(我使用PHP)。如果服务器端出现错误,请将用户重定向回表单页面,检查会话变量,并根据需要显示错误。确保在显示会话变量后取消设置以释放内存。重新填充表单也是一样——会话变量中的值。

我通常会将所有错误字符串存储在会话变量的数组中(我使用PHP)。如果服务器端出现错误,请将用户重定向回表单页面,检查会话变量,并显示错误