我有一个用户注册表(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>