在表单提交时返回错误/成功消息的路由


Route for sending back an error / success message on form submission

我正试图使我的联系表单提交过程工作同样好,无论客户端是否启用javascript。

如果启用了javascript,那么验证将在onsubmit事件触发时在客户端处理,该事件调用我的validateContactForm()函数:

<form method="POST" action="email_processing.php" onsubmit="return validateContactForm();">

如果返回false,则不提交表单,并指示客户端纠正他所做的错误。

如果validateContactForm()返回true,或者javascript被禁用,则将表单提交给email_processing.php脚本。然后php脚本重新验证数据,如果一切正常,则发送电子邮件。

如果我依赖于javascript,我可以使这个过程异步,只是让php脚本返回一个消息,这将得到客户端回调函数处理。这要么是错误消息,要么是成功消息。

但是因为我想让这个工作为禁用javascript的人,我不能这样做。

如果出现错误,我需要返回联系人表单页面,并在联系人表单中显示错误消息,如果成功,我应该删除联系人表单,只在表单原来的位置显示"谢谢"消息。

我很想知道stackoverflow用户是否会:

  1. 将表单提交给php脚本,然后重定向到另一个php/html页面

  2. 在contact us php页面本身的顶部有验证/电子邮件发送功能,每次contact us页面加载时,我们检查是否已经设置了某些变量,如果是这样,那么我们知道我们需要验证和发送电子邮件并显示正确的格式/消息

  3. 如果我应该考虑这个不同。这必须是一个非常常见的情况来处理,我已经做了很多次在小的应用程序为自己,我知道我将有javascript启用,但我需要为客户端这样做,我想确保它是正确的。

提前致谢

我是这样做的。首先,我使用jQuery验证(这就是我验证的方式),错误将显示是否有,并且不会让用户在没有验证的情况下继续

然后使用jQuery ajax发送表单提交当它到达服务器时,我还会使用php进行双重检查这允许双重保护,错误会返回

如果用户在提交表单时没有启用javascript,验证完成后会显示错误消息

HTH

这确实是一个很常见的情况。

所以有两种类型的验证:客户端和服务器端。服务器端是最重要的,我将更多的客户端验证视为一种功能。例如,如果您正在填写表单,在没有实际发送请求的情况下查看是否正确填写是"很好"的,但出于安全原因,您仍然应该执行服务器端验证。

您总是想要进行服务器端验证,但实际上两者都做更好。你应该这样设计它:

表单动作应该将用户发送到.php文件。如果内容经过验证,那么很好,给他一个ok消息。如果未验证内容,则将其发送回表单页面并显示错误消息。

如果你正在寻找一个不那么抽象的解决方案,请告诉我