需要使用php访问输入到表单中的数据,然后将其发送到同一页面上的javascript,而无需重新加载


Need to access data entered into a form using php and then send it to javascript all on the same page and without reloading?

我有一个用户注册表(register.php),用户输入用户名、密码和电子邮件。然后将它们发送到另一个php页面(formValidate.php),以便使用ajax进行验证。

我想使用php将输入到表单中的密码转换为md5哈希,然后将此变量传递给javascript,以便javascript可以将此数据传递给formValidate.php

据我所知,这一切都应该在不重新加载register.php页面的情况下发生,因为我在这个页面上也有javascript,它将输入的数据发送到我的formValidate.php页面。

我不知道该怎么做。

为了实现这一点,您必须使用AJAX。本质上,有两个部分:

1) 您需要一个PHP脚本,它将接受密码的post变量,对其进行md5散列,然后将其作为输出进行回显。让我们称之为to_md5.php

2) 在您的注册页面中,您需要拦截表单提交,使用ajax调用将密码提交给to_md5.php脚本。您还需要设置回调函数,以便在获得MD5哈希密码时完成表单提交。在回调函数中,您可以更改密码值并提交表单。

也许有更好的方法可以做到这一点,但希望它能给你一个大致的想法。

[EDIT]

这就是问题所在,有人建议我不要使用javascript将纯文本密码发送到php页面。

啊,我明白了。幸运的是,Javascript中也实现了许多加密算法。一个想到的是托管在谷歌代码上的CryptoJS。

MD5的实现看起来像这样:

<script type="text/javascript" src="http://crypto-js.googlecode.com/files/2.5.3-crypto-md5.js"></script>
<script type="text/javascript">
   var digest = Crypto.MD5("MyP@ssw0rd");
   // Two different ways of creating the MD5 hash...
   var digestBytes = Crypto.MD5("MyP@ssw0rd", { asBytes: true });
   var digestString = Crypto.MD5("MyP@ssw0rd", { asString: true });
</script>