【问题标题】:HTML Forum validation via JS returning php value通过 JS 返回 php 值的 HTML 论坛验证
【发布时间】:2014-03-30 02:26:35
【问题描述】:

希望这不会像我一直认为的那么简单。单击提交时,一个简单的 HTML 论坛会调用 Javascript 进行验证,由 PHP 处理,以将已验证的信息放入 MySql 表中。我遇到的问题是,一旦我得到了 javascript 返回 true,我该如何将它拉出来以在 PHP 中使用?

论坛:

<form action="" method="post" name="register">
<div class="field">
    <label for "username">Username</label>
    <input type="text" name="username" id="username" value="" autocomplete="off">
</div>

<div class="field">
    <label for "password">Choose a password</label>
    <input type="password" name="password" id="password">
</div>

<div class="field">
    <label for "password_again">Reenter Password</label>
    <input type="password" name="password_again" id="password_again">
</div>

<div class="field">
    <label for "name">Name</label>
    <input type="text" name="name" id="name" value="" autocomplete="off">
</div>
<input type="submit" value="Register" id="submit" onclick="validate()" />

外部JS文件:

function validate() {
var password = document.register.password.value;
var passwordagain = document.register.password_again.value;
var name = document.register.username.value;
var test = new RegExp("[^a-zA-Z0-9]");
var space = String.fromCharCode(32);
if (name.match(test)) {
    alert("Your name may only contain letters and numbers.");
    return false;
} else if (name.match(space)) {
    alert("Spaces are not allowed.");
    return false;
} else if ((name.length <= 2) || (name.length >= 11)) {
    alert("Name must be between 3 and 10 characters.");
    return false;
} else if (!password.match(passwordagain)) {
    alert("Passwords do not match");
    return false;
} else if ((password.length <= 6) || (password.length >= 32)) {
    alert("Password must be between 6 and 32 characters long.");
    return false;
}
return true;
}

【问题讨论】:

  • 无论您的表单操作指向什么,数据都将提交到哪里。如果为空,将提交到浏览器所在的页面。您可以添加 PHP 代码来处理当前页面中的 POST,或者创建一个专用的 PHP 页面来处理 POST 数据并更改表单操作。

标签: javascript php html validation


【解决方案1】:

您可以将表单的action 属性设置为指向表单验证后要重定向到的 PHP 页面。

或者,您可以使用XMLHttpRequest 将表单数据发送到 PHP 脚本。已经有一个关于如何执行此操作的问题,您可以找到 here


旁注:

在服务器端进行所有表单验证通常是一个好主意。这是因为有人很容易破解 JavaScript。任何人都可以通过打开浏览器的控制台并执行以下操作来更改您的 validate() 功能:

validate = function() { return true; };

【讨论】:

  • 感谢内森和格雷格。我会花一些时间看看我是否可以设法获得一个相当于我拍打在一起的 JS 的 php。没想到环游这么容易。
猜你喜欢
  • 1970-01-01
  • 2016-04-11
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-03
  • 2017-09-04
  • 1970-01-01
相关资源
最近更新 更多