Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.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
Javascript 单击“提交”后的客户端表单验证_Javascript_Forms_Validation_Client Side Validation - Fatal编程技术网

Javascript 单击“提交”后的客户端表单验证

Javascript 单击“提交”后的客户端表单验证,javascript,forms,validation,client-side-validation,Javascript,Forms,Validation,Client Side Validation,我有两个php文件“source.php”和“target.php”。在我的source.php部分中 <form method="POST" id="form1" action="target.php"> ... <input type="submit" name="submit" value="Submit"/> </form> ... 当我单击submit时,它会进入“target.php”(即使我在表单中有错误),但我希望,只有在所有表单字段都经

我有两个php文件“source.php”和“target.php”。在我的source.php部分中

<form method="POST" id="form1" action="target.php">
...
<input type="submit" name="submit" value="Submit"/>
</form>

...

当我单击submit时,它会进入“target.php”(即使我在表单中有错误),但我希望,只有在所有表单字段都经过验证后,它才会进入目标页面,否则它会显示某种警告消息并保持在同一页面上。请帮忙!也许这对某些人来说是个愚蠢的问题,但我是个初学者。(我知道如何进行所有现场验证,并且工作正常)

您可以使用AJAX验证表单。不建议将JavaScript用于表单验证。 提供了一个简单的AJAX验证教程

但是要注意,即使在提交到target.php之前验证表单,也要确保检查target.php中的数据。这是因为JavaScript可以在浏览器中更改(多亏了现代DOM解释器)。它可以在没有AJAX验证的情况下提交表单。所以你应该在提交之前和之后检查两次

还要确保转义数据,因为用户输入永远不可信。
您还应该使用
剥离标签($string)
,以防止使用插入php代码。

JavaScript很可能是最简单的方法(阅读其他文章)

但是,如果您不想使用JavaScript,您可以随时检查是否所有表单都是使用
isset()
或类似工具设置的,然后在URL中传递
$\u POST
变量,并使用
$\u GET
获取这些变量。当然要确保URL中没有任何敏感信息。此外:您可以始终使用全局变量


不使用JavaScript的另一种方法是在多次检查(如转义字符串等)后提交到数据库,甚至可能加密,但我不建议这样做,因为这是一个漫长的过程。

重复的问题。请在下次发布之前彻底搜索

一般来说,javascripts用于验证。但也有javascripts效率低下的情况,例如,当您需要验证国家及其州时。将整个国家及其州列表发送给客户端是不实际的。在这种情况下,使用AJAX。通过使用AJAX,客户机在用户输入数据后立即将数据发送到服务器。然后,它只获取所需的数据。这是客户机和服务器之间的同步双向通信。例如,如果用户输入国家名为INDIA,则使用AJAX加载印度的州进行验证,从而节省带宽。 JavaScript和AJAX不容易学习,你必须研究并尝试更正不同的代码。只需谷歌“JavaScript表单验证”

这是W3学校的

必填字段 下面的函数检查字段是否为空。如果该字段为空,则会出现一个警告框,警告消息,函数返回false,表单将不会提交:

function validateForm()
{
    var x=document.forms["myForm"]["fname"].value;
    if (x==null || x=="")
    {
       alert("First name must be filled out");
       return false;
    }
}
提交表单时可以调用上述函数:

function validateForm()
{
    var x=document.forms["myForm"]["fname"].value;
    if (x==null || x=="")
    {
       alert("First name must be filled out");
       return false;
    }
}
范例

<form name="myForm" action="demo_form.asp" onsubmit="return validateForm()" method="post">
First name: <input type="text" name="fname">
<input type="submit" value="Submit">
</form>

名字:
下面是更基本的示例


祝您好运

您需要使用Javascript验证它们。阅读此
type=“submit”
和no
type=“sumbit”
如果您将表单提交到另一个文件,您将需要使用javascript验证表单并防止在出现错误时提交,否则您的表单将被定向到第二个文件。即使是regex.No,在实际发布表单之前使用ajax验证表单也是一个坏主意。这意味着您实际上要向服务器发送两次表单往返,第一次已经发送了所有数据。使用javascript进行客户端验证很好。但是,无论是否使用客户端验证,都必须始终使用服务器端验证。@Arjan所说的ajax验证,我的意思是检查用户名可用性、正确的电子邮件格式等。但是,是的,必须始终使用服务器端验证,因为我们不知道数据是什么。它可能是任何东西,php代码,SQL注入技术等等。的确,您可以使用ajax检查用户名的可用性。但是,您应该在用户输入用户名时执行此操作,而不是在用户希望提交表单时执行此操作。(还有一些安全问题,因为查看用户名列表并找出所使用的用户名非常容易。)此外,在提交表单时仍然需要验证用户名。我还忘了提到
strip\u tags()
是解决潜在问题的错误方法。(只有在使用
eval()
时插入php代码才是问题)
echo strip\u标记('foo@Arjan是的,你所说的也是真的。我通常在jQuery blur上使用ajax用户名检查。是的,我在
strip\u标记方面是错的。