Php 用于在表单提交时发回错误/成功消息的路由
无论客户机是否启用了javascipt,我都在努力使我的联系人表单提交过程同样有效 如果启用了javascript,则当触发调用my validateContactForm()函数的onsubmit事件时,将在客户端处理验证:Php 用于在表单提交时发回错误/成功消息的路由,php,javascript,validation,Php,Javascript,Validation,无论客户机是否启用了javascipt,我都在努力使我的联系人表单提交过程同样有效 如果启用了javascript,则当触发调用my validateContactForm()函数的onsubmit事件时,将在客户端处理验证: <form method="POST" action="email_processing.php" onsubmit="return validateContactForm();"> 如果返回false,则不提交表单,并指示客户纠正错误 如果valida
<form method="POST" action="email_processing.php" onsubmit="return validateContactForm();">
如果返回false,则不提交表单,并指示客户纠正错误
如果validateContactForm()返回true或禁用javascript,则表单将提交到电子邮件_processing.php脚本。php脚本然后重新验证数据,如果一切正常,它会发送一封电子邮件
如果我依赖javascript,我可以使这个过程异步,让php脚本返回一条消息,该消息将由客户端回调函数处理。这可能是一条错误消息,也可能是一条成功消息
但是因为我想让javascript被禁用的人可以使用,所以我不能这样做
如果出现错误,我需要返回联系人表单页面,在联系人表单中显示错误消息,如果成功,我可能应该删除联系人表单,在表单原来的位置显示“感谢”消息
我想知道stackoverflow用户是否会:
事先非常感谢以下是我的工作。首先,我使用(这就是我验证的方式),如果有错误,就会显示错误,并且不允许用户在没有验证的情况下继续 然后我发送表单提交,当它到达服务器时,我还使用php进行双重检查,这允许我进行双重保护,并将错误发送回服务器 如果用户在提交表单时未启用javascript,则会显示验证完成错误消息
这确实是一个非常常见的情况 所以有两种验证:客户端和服务器端。服务器端是最重要的,我认为客户端验证更多的功能。例如,如果您正在填写表单,在不发送请求的情况下查看表单是否正确填写“很好”,但出于安全原因,您仍然应该执行服务器端验证 您可能希望始终执行服务器端验证,但实际上最好同时执行这两种验证。以下是您应该如何设计它: 表单操作应将用户发送到.php文件。如果内容经过验证,很好,给他一个ok消息。如果内容未经验证,请将其发送回表单页面并显示错误消息
如果您正在寻找一个不那么抽象的解决方案,请告诉我。谢谢您的回复。我以前曾按照您建议的方式使用JQuery进行过验证,但是如果禁用了javascript,那么在服务器端完成验证之后,错误或成功消息是如何发送回来的?我认为,需要返回一个全新的页面,因为我们无法进行任何ajax dom操作,所以我需要重定向到“错误”或“成功”页面,或者表单提交到的实际“.php”页面需要是实际的联系人表单页面,不是吗?这就是让我困惑的地方。是的,如果没有javascript,他们应该返回到同一页面,并显示错误消息右侧,谢谢。在这种情况下,脚本如何知道它是否是通过启用javascript的方式发送的?您是否在POST请求中添加了一个额外的变量?哦,我明白您的意思了,是的,您可以这样做,但只需检查$_服务器['HTTP_X_REQUESTED_WITH']='XMLHttpRequest',这样我就知道它是否是ajax请求。谢谢你的回复。真正让我困惑的是,当你说“给他一个OK消息”时,如果你没有使用ajax,那么你要么需要将他重定向到“OK消息页面”,要么表单发送到的实际的“.php”页面应该是带有表单的页面,表单可以根据响应进行配置,不是吗。你会怎么处理?谢谢,同样地,当发送回表单页面时,它必须是某种重定向(重定向应该如何最好地完成?),或者表单页面本身应该以某种方式进行配置。嘿,很抱歉评论太晚(我需要了解如何在收到评论时发送邮件)。好的,下面是:您可以使用GET请求将用户重定向回表单页面,即页眉(“Location:page.php?error_msg=invalid_format”);。然后在表单页面上,您可以使用if($\u GET['error\u msg']==“invalid\u format”)displayError();