javascript - 如何使 JavaScript 注册验证与 example.php 文件一起使用?
问题描述
我已经设置了一个 MySQL 数据库来维护登录和注册数据。现在我想为我的注册表单编写 javascript 验证
我对 Javascript 和 ajax 验证做了一些研究。我的理解是,出于安全原因,您可以在服务器端同时进行 javascript 和 ajax 验证。但是也可以只进行 js 验证?
我的 register.php 看起来像这样:
<html>
<head>
<title>Register</title>
<script src="script.js"></script>
</head>
<body>
<br>
<form action="register.php" method="post" id="form" name="form">
<table width="35%">
<tr>
<td>Name</td>
<td><input type="text" name="name" ></td>
<div id="username_error"></div>
</tr>
<tr>
<td>Email</td>
<td><input type="email" name="email" ></td>
<div id="email_error"></div>
</tr>
<td>Password</td>
<td><input type="password" name="password" ></td>
<div id="password_error"></div>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Register" onSubmit="myFunction()"></td>
</tr>
</table>
<a href="login.php">Login</a>
这行代码只是我用来显示错误消息的试验:
<div id="username_error"></div>
<div id="email_error"></div>
<div id="password_error"></div>
这是我的 script.js
let name = document.querySelector("#name")
let email = document.querySelector("#email")
let password = document.querySelector("#password")
let passVal = '?=.*\d)(?=.*[a-z])(?=.*[A-Z]'
let emailVal = '^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/'
function myFunction() {
if(name == ""){
alert ( "Please fill in the 'Your Name' box." );
}
if(email == emailVal){
alert ( "Please fill in the 'Your Name' box." );
}
if(password == passVal){
alert ( "Please fill in the 'Your Name' box." );
}
}
Register.php 和 script.js 似乎不能一起工作。我相信我的设置是正确的:
<td><input type="submit" value="Register" onSubmit="myFunction()"></td>
但不确定。
如何实现我的 script.js 以使用 register.php?
解决方案
回答你的最后一个问题:不。您不能只在客户端上进行 JS 验证。永远不要相信客户给你的数据。即使是业余“黑客”也很容易绕过 JS 检查并提交他们想要的任何数据。
需要在两端进行验证(在 UX 客户端和服务器上,以确保没有任何危险通过)。
您的函数不起作用的原因是页面加载时正在设置变量(名称、电子邮件等)。您需要在函数内部设置变量,如下所示:
function myFunction() {
let name = document.querySelector("#name")
let email = document.querySelector("#email")
let password = document.querySelector("#password")
let passVal = '?=.*\d)(?=.*[a-z])(?=.*[A-Z]'
let emailVal = '^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/'
if(name == ""){
alert ( "Please fill in the 'Your Name' box." );
}
if(email == emailVal){
alert ( "Please fill in the 'Your Name' box." );
}
if(password == passVal){
alert ( "Please fill in the 'Your Name' box." );
}
}
在您的 register.php 文件的顶部,您需要检查$_POST
数据,并在其中验证它。那是服务器端检查。确保您对收到的所有数据进行转义,以确保您免受恶意注入的侵害。
推荐阅读
- javascript - 如何将 2 个 javascript 数组从 laravel 视图传递到 laravel 控制器?
- ios - 如何在按钮单击时在一个视图控制器上显示不同的视图
- angularjs - 使用 ng-repeat 创建一个包含 1…N 的列标题数组
- java - 匿名类中的执行顺序
- javascript - 涉及滑块的奇怪错误
- java - 打印非托管 Spring bean 名称
- matlab - 如何读取文本文件中的信息以绘制数据?MATLAB
- mysql - MySQL left join with LIMIT 1 未返回所需结果
- jquery - 如何使用 Ajax 删除多个文件?
- ios - 使用交叉背景颜色快速制作 45 度的 UILabel