结合使用javascript和php

结合使用javascript和php,php,javascript,Php,Javascript,我有一个PHP表单,在提交时需要一些非常简单的验证。我更愿意在客户端进行验证,因为有相当多的服务器端验证处理将表单值写入数据库的问题。所以我只想在Submit上调用一个javascript函数来比较两个密码字段中的值。这就是我得到的: function validate(form){ var password = form.password.value; var password2 = form.password2.value; alert("password:"+password+

我有一个PHP表单,在提交时需要一些非常简单的验证。我更愿意在客户端进行验证,因为有相当多的服务器端验证处理将表单值写入数据库的问题。所以我只想在Submit上调用一个javascript函数来比较两个密码字段中的值。这就是我得到的:

function validate(form){
  var password = form.password.value;
  var password2 = form.password2.value;
  alert("password:"+password+" password2:" + password2);

  if (password != password2) {
    alert("not equal");
    document.getElementByID("passwordError").style.display="inline";
    return false;
  }
  alert("equal");
  return true;
}
其思想是,如果两个密码不匹配,将显示包含错误消息的默认隐藏div。警报只是显示password和password2的值,然后再次指示它们是否匹配将不会在生产代码中使用

我正在使用一个input type=submit按钮,并在表单标记中调用函数:

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" onsubmit="return validate(this);">
当输入不匹配的值时,一切都会按预期发出警报。基于过去的使用,我希望并假设,如果函数返回false,实际提交将不会发生。然而,事实确实如此。我正在通过在密码字段中输入不匹配的值进行测试,警报会清楚地向我显示值和不相等的结果,但实际的表单操作仍在发生,它正在尝试写入我的数据库


我对PHP相当陌生;有什么东西不能让我以这种方式与javascript结合吗?如果返回true,是否最好使用input type=按钮并在函数本身中包含submit?

使用类似于原型的javascript库和类似于Event.stop的方法:


使用类似于prototype的javascript库和类似Event.stop的方法:


如果JavaScript中出现错误,则不会返回false,表单仍将提交


您的javascript中有一个错误:getElementByID应该是getElementByID。

如果javascript中出现错误,返回值不会达到false,表单仍将提交


javascript中有一个错误:getElementByID应该是getElementByID。

确保该方法实际返回false。如果在返回false语句之前出现错误,例如在这一行上

 document.getElementByID("passwordError").style.display="inline";

然后表单仍然可以提交。

确保该方法实际返回false。如果在返回false语句之前出现错误,例如在这一行上

 document.getElementByID("passwordError").style.display="inline";

然后表单仍然可以提交。

我不知道PHP在这方面涉及到多少。这是一个仅限于JS的问题。还没有人提到过这一点,但请记住,您必须在客户端JS和服务器端PHP中执行验证。否则,任何人都可能关闭JavaScript,并可能在数据库中插入无效信息。web开发的第一条规则是,不要相信来自客户端的任何东西。我不知道PHP在这方面有多重要。这是一个仅限于JS的问题。还没有人提到过这一点,但请记住,您必须在客户端JS和服务器端PHP中执行验证。否则,任何人都可能关闭JavaScript,并可能在数据库中插入无效信息。1网络开发的规则,不要相信来自客户的任何东西。+1很好。在过去的五分钟里,我一直在关注这个问题,但没有发现问题所在。此外,你永远不应该依赖javascript来验证你的数据。是的,你应该使用javascript来帮助用户避免犯错误,但你应该在服务器端进行同样的验证,因为javascript可以关闭、更改等。。。如果你需要验证更多的字段,我建议你搜索一些库,比如:谢谢!萤火虫没有抓到,我也不会抓到。我已经在同一个js文件中的其他几个函数中使用了这一行代码,并且已经盯着它看了很长一段时间了,现在我试图找出不同之处。我想我看它太久了;新鲜的眼睛总是能捕捉到这些。@Gonçalo Queirós-总的来说我同意,但在这种情况下,我在一个受控的环境中工作,我可以绝对肯定最终用户不能关闭javascript。+1捕捉得很好。在过去的五分钟里,我一直在关注这个问题,但没有发现问题所在。此外,你永远不应该依赖javascript来验证你的数据。是的,你应该使用javascript来帮助用户避免犯错误,但你应该在服务器端进行同样的验证,因为javascript可以关闭、更改等。。。如果你需要验证更多的字段,我建议你搜索一些库,比如:谢谢!萤火虫没有抓到,我也不会抓到。我已经在同一个js文件中的其他几个函数中使用了这一行代码,并且已经盯着它看了很长一段时间了,现在我试图找出不同之处。我想我看它太久了;新鲜的目光总是能捕捉到这些。@Gonçalo Queirós-总的来说我同意,但在这种情况下,我在一个受控的环境中工作,我可以绝对肯定最终用户不能关闭javascript。谢谢,但我不想进入librar
在一个小站点的一个页面上进行单一验证。看起来像是用凯迪拉克打苍蝇。原型很小,而且这种东西做得很好。当你使用一个库时,你是在根据一个定义良好的API编程,如果不是,你是在根据许多不同的API编程,每个浏览器一个,你一定会重新发明轮子。谢谢,但我不想进入库中,在一个小网站的一个页面上进行一次验证。看起来像是用凯迪拉克打苍蝇。原型很小,而且这种东西做得很好。当你在使用一个库时,你是在用一个定义良好的API编程,如果不是,你是在用许多不同的API编程,每个浏览器一个,你一定会重新发明轮子。奇怪的是,Firebug没有抛出任何错误。我现在知道有一个输入错误应该是Id,而不是Id,但是错误捕捉器没有捕捉到它。奇怪的是,Firebug没有抛出任何错误。我现在知道有一个输入错误应该是Id,而不是Id,但是错误捕捉器没有捕捉到它。