2014-05-10 105 views
0

我有2个PHP文件“source.php”和“target.php”。在source.php部分我有,客户端表单验证点击SUBMIT

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

当我点击提交转移到“target.php”(即使我有形式错误),但我想的是,只有所有表单后字段进行验证后会转到目标页面,否则会显示某种警告消息并保留在同一页面上。请帮忙!也许这对某些人来说是一个愚蠢的问题,但我是一个初学者。 (我知道如何做所有的现场验证和它的工作正常)。

+2

您需要使用Javascript验证它们。请阅读http://www.thesitewizard.com/archive/validation.shtml –

+0

'type =“submit”'no'type =“sumbit”' –

+0

如果您将表单提交到另一个文件,您需要验证表单在JavaScript和防止错误提交,否则你的表单将被定向到第二个文件。 – MSadura

回答

0

重复问题重复。请在下次发帖之前进行彻底搜索。

通常使用javascripts进行验证。但有些情况下,javascripts变得效率低下,例如,当您需要验证国家及其状态时。将实际发送到客户端的国家和州的完整列表不切实际。在这种情况下,使用AJAX。通过使用AJAX,客户端在用户输入数据后立即将数据发送到服务器,然后仅提取所需的数据。它在客户端和服务器之间同时进行双向通信,例如,如果用户输入国家名称为INDIA,使用INDIA的AJAX状态进行验证,从而节省带宽。 JavaScript和AJAX是不容易学,你必须研究试用无误不同codes.Just谷歌“的JavaScript表单验证” ......

这是W3Schools的...

必填项 下面的函数检查一个字段是否被留空。如果该字段为空,一个警告框提醒消息,该函数返回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> 

这里是更基本的例子http://www.w3schools.com/js/js_form_validation.asp

好运

0

您可以使用AJAX来验证您的表单。 JavaScript不推荐用于表单验证。 对AJAX验证一个简单的教程,请here

但要知道,即使你是验证您的表单提交之前target.php,始终确保您检查数据target.php了。这是因为JavaScript可以在浏览器中改变(感谢现代DOM解释器)。可以这样做,以便表单在未经AJAX验证的情况下提交。所以你应该在提交之前和之后检查两次。

此外请确保转义数据,因为用户输入永远不会被信任。 您还应该使用strip_tags($string)以防止使用插入php代码。

+1

不,在您真正发布表单之前使用ajax验证表单是个坏主意。这意味着你实际上正在向服务器做两次往返发布表单,其中第一个已经发送了所有数据。使用JavaScript进行客户端验证就好了。但是否使用客户端验证,您**总是**必须使用服务器端验证。 – Arjan

+1

@Arjan通过ajax验证,我的意思是检查用户名可用性,正确的电子邮件格式等。但是,我们必须始终使用服务器端验证,因为我们不知道数据是什么。它可能是任何东西,php代码,SQL注入技术等。 –

+0

确实,您可以使用ajax来检查用户名是否可用。但是,当用户输入用户名时,应该这样做,而不是在他提交表单时。 (并且存在一些安全问题,因为通过用户名列表很容易找出哪些是用户名。)另外,您还需要在提交表单时验证用户名。我也忘了提及'strip_tags()'是潜在问题的错误解决方案。 (如果使用'eval()',插入php代码只是一个问题。)'echo strip_tags('foo Arjan

0

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

但是,如果你不想使用JavaScript,你可以随时检查,如果一切形式使用set isset()或类似的东西,然后通过对$_POST变量在URL中使用$_GET抓住那些。当然,请确保URL中没有任何敏感信息。另外:你总是可以使用全局变量。

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