我有这个脚本:
<script type="text/javascript" src="sha512.js"></script>
<script type="text/javascript" src="forms.js"></script>
<script>
function loadXMLDoc(form, password)
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
formhash(form, password);
}
}
xmlhttp.open("POST","post.php",true);
xmlhttp.send();
}
</script>
这个html:
<div id="myDiv">
<form action="register.php" method="post">
Email: <input type="text" name="email" /><br />
Username: <input type="text" name="username" /><br />
Password: <input type="password" name="p" id="password" /><br />
<input type="button" value="Register" onclick="loadXMLDoc(this.form, this.form.password);" />
</form>
</div>
您可能已经注意到,一旦按下按钮,onclick 就会运行两个函数。第一个函数就是您在上面看到的那个,它是一个运行 ajax 的 JavaScript 代码,其中包含一些 PHP。另一个功能是 100 % Javascript,它对密码字段进行加密。
我的问题是,在使用 formhash 函数对密码进行加密之前,我无法让它运行 PHP。
我需要这个的原因是因为我需要 PHP 在密码加密之前检查密码是否为空。我想也许 PHP 会在 formhash 函数中的所有 javascript 运行后运行,这为时已晚。我需要先运行“onclick”中的第一个函数,然后再运行第二个。我做错了什么,还是如我所料?
编辑:哇,我有一个“{”太多了。现在我认为它可以工作了,但它不记得用户在表单中发布了什么。所以我不能做这样的事情:
<?php
if (empty($_POST['email'])) {
echo "<p>Test</p>";
}
?>
因为它不再知道电子邮件。