PHP / HTML / JS:这个HTML表单是如何处理的?

时间:2013-07-25 17:28:46

标签: php javascript html-form

SETUP:

当我出现一些我不太了解的东西时,我正在对本页的后端进行逆向工程以获得乐趣和练习:

单击寄存器时,/ js / login.js中的AttemptRegister()会进行初始输入验证,检查是否有任何字段为空,包含默认值,并确保密码匹配。

function AttemptRegister() {
 // Simple validation of input fields first
 var status=document.getElementById("regstatus");
 status.style.color='#000000';
 status.value = "";

 var username = document.getElementById("username");
 var email = document.getElementById("email");
var password = document.getElementById("password");
var confirmPassword = document.getElementById("confirmPassword");

if(""==username.value || "user name"==username.value) {
    status.style.color='#C00000';
    status.value = "Invalid user name";
    username.selected = true;
    return;
}
if(""==email.value || "email" == email.value) {
    status.style.color='#C00000';
    status.value = "Invalid email address";
    email.selected = true;
    return;
}
if(""==password.value || "password" == password.value) {
    status.style.color='#C00000';
    status.value = "Must provide password";
    password.selected = true;
    return;
}
if(password.value!=confirmPassword.value ) {
    status.style.color='#C00000';
    status.value = "Passwords do not match";
    password.selected = true;
    return;
}

// We open the thankyou page for registering, as that's where the actual registration occurs on the POST variables.  If they fail, we'll get kicked back here
status.value = "Submitting...";
//window.location.href='thankyou_reg.html';

// Submit with hidden form
var form = document.getElementById("submitEmail").form;
document.getElementById("submitEmail").value = email.value;
document.getElementById("submitUsername").value = username.value;
document.getElementById("submitPassword").value = password.value;
form.submit();

}

它设置" regstatus" html中的字段为"正在提交..."并填写下面隐藏的html表单并将其提交给thankyou_reg.html?

<form action="thankyou_reg.html" method="post">
    <input type="hidden" name="submitEmail" id="submitEmail" value=""/>
    <input type="hidden" name="submitUsername" id="submitUsername" value=""/>
    <input type="hidden" name="submitPassword" id="submitPassword" value=""/>
    <input type="hidden" name="registerSubmit" id="registerSubmit" value="true"/>
</form>

这是我感到困惑的地方,如何通过平面.html页面处理表单数据?它进行二次验证检查,以确保用户名和密码足够长,电子邮件格式正确,并查询数据库以确保此电子邮件或用户名尚未使用。如果它失败了,它会反弹回index.html页面并更新&#34; regstatus&#34;输入字段再次显示错误消息。

问题:

我在这里缺少什么?在PHP或服务器设置中是否有一种方法可以转移表单操作,&#34; thankyou_reg.html&#34;在这种情况下,并将其重定向到php页面?然后加载&#34; thankyou_reg.html&#34;成功或回到&#34; index.html&#34;失败时,使用javascript执行&#34; regstatus&#34;的值变化?

2 个答案:

答案 0 :(得分:0)

在.htaccess文件中,可以更改设置以在扩展名为.html的文件中运行PHP代码。您使用的网站可能已将其更改为运行PHP。

http://php.about.com/od/advancedphp/p/html_php.htm

答案 1 :(得分:0)

Apache和其他服务器有一些方法可以指定应为特定文件扩展名加载哪些应用程序。例如,.php扩展名表示应该加载PHP并应该处理请求。我的想法是.html扩展实际上是由服务器应用程序(可能是PHP)处理的,但是他们可以做到这一点来混淆在幕后进行处理的内容。

可能存在将thankyou_reg.html映射到php页面的重写规则。例如,将它映射到像index.php?forward=thankyou_reg.html这样的东西可能会很好,它可以为您提供更漂亮的用户面向网址。

同样thankyou_reg.html可以是里面有index.php文件的目录。

但实际上任何事情都可能发生在幕后。