註冊登入——前端、後臺驗證(正則表示式)
註冊
-
介面如圖
-
前端驗證
- html頁面程式碼
<form id="form_reg"> <div> <input type="text" id="account" name="account" placeholder="請輸入郵箱" /> </div> <div class="isMale"> <input type="radio" name="male" id="male" value="true" checked><label for="male">男</label> <input type="radio" name="male" id="female" value="false"><label for="female">女</label> </div> <div> <input type="password" id="password" name="password" placeholder="請輸入密碼" /> </div> <div> <input type="password" id="repeatPassword" name="repeatPassword" placeholder="請重複密碼" /> </div> <div> <table border="0" height="60px"> <tr> <td><input type="text" id="yzm" name="yzm" style="width: 100%; height: 40px; display: inline-block;"></td> <td><p style="width: 20px;"></p></td> <td> <img src="/doGet" alt="" id="captcha1" onclick="refreshCaptcha()" style="height: 40px; width: 100%; vertical-align: middle;"> </td> </tr> </table> </div> <div> <input id="btnSubmit" type="submit" value="註冊"><br><br> </div> </form>
- JQuery實現前端驗證
<script> function refreshCaptcha(){ var ran = Math.floor(Math.random() * 100) $('#captcha1').attr('src','/doGet?' + ran); } $('#btnSubmit').on('click',function(event){ event.preventDefault(); if ($('#account').val().trim().length < 1) { layer.msg('請選擇或填寫郵箱!'); $('#account').focus(); return; } var reg1 = /^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/; var input1 = $('#account').val(); if(!reg1.test(input1)){ layer.msg('郵箱格式錯誤,請輸入正確郵箱'); return; } if ($('#password').val().trim().length < 1) { layer.msg('請填寫密碼!'); $('#password').focus(); return; } var pass = /^[a-zA-Z]\w{5,17}$/; var input2 = $('#password').val(); if(!pass.test(input2)){ layer.msg('密碼長度要在6~18位之間,且必須以字母開頭!') return; } if ($('#repeatPassword').val().trim().length < 1) { layer.msg('請填寫確認密碼!'); $('#repeatPassword').focus(); return; } if (($('#repeatPassword').val().trim())!=($('#password').val().trim())) { layer.msg('兩次密碼填寫不一致!'); $('#repeatPassword').focus(); return; } if ($('#yzm').val().trim().length < 1) { layer.msg('請填寫驗證碼!'); $('#yzm').focus(); return; } $.post('/api/register', $('#form_reg').serialize(), function(res) { if(res.code == 200){ setTimeout(function(){ location.reload(); },2000); layer.msg('註冊成功,請前往郵箱進行啟用登入!') }else{ //$('.error-message').text(res.message); layer.msg(res.message) } }) }) </script>
-
後臺驗證
- 前端後臺使用的連線方式是MyBatis;
- 後臺驗證程式碼如下:
String regex = "^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$"; if( !match(regex,account)){ return new JSONResult(400,"郵箱格式錯誤!"); } if(!password.equals(repeatPassword)){ message ="兩次輸入密碼不一致"; } if(!yzm.equals(varCode)){ message = "驗證碼輸入不正確"; }
- 郵箱啟用功能,需要匯入郵箱寫郵件的依賴、許可權等,此處不詳細介紹,
WriteEmail.emailSend(user.getEmail(), "http://localhost:8088/" + salt);
登入
-
登入頁面如下:
-
前端驗證,程式碼如下:
- Form表單程式碼
<form id="form_login">
<div>
<input type="text" id="account" name="account" placeholder="請輸入郵箱">
</div>
<div>
<input type="password" id="password" name="password" placeholder="請輸入密碼">
</div>
<div>
<input id="btnLogin" type="submit" value="登入">
</div>
</form>
- Jquery驗證,
<script>
$('#btnLogin').on('click',function(event){
event.preventDefault();
if ($('#account').val().trim().length < 1) {
layer.msg('請填寫郵箱或手機號')
$('#account').focus();
return;
}
var reg = /^1[34578]\\d{9}$/;
var reg2 = /^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$/;
var input2 = $('#account').val();
var input1 = $('#account').val();
if(!reg.test(input1)&&!reg2.test(input2)){
layer.msg('請輸入正確的郵箱或者手機格式!')
}
if ($('#password').val().trim().length < 1) {
layer.msg('請選擇或填寫密碼!');
$('#password').focus();
return;
}
$.post('/api/login', $('#form_login').serialize(), function(res) {
if(res.code == 200){
setTimeout(function(){
location.href = '/index';
},2000);
layer.msg('登入成功,正在跳轉')
}else{
//$('.error-message').text(res.message);
layer.msg(res.message)
}
})
})
</script>
- 後臺驗證,程式碼如下:
String mobile = "^1[34578]\\d{9}$";
String regex = "^([\\w-\\.]+)@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.)|(([\\w-]+\\.)+))([a-zA-Z]{2,4}|[0-9]{1,3})(\\]?)$";
System.out.println(match(regex,account));
if( !match(regex,account) && !match(mobile,account)){
return new JSONResult(400,"郵箱或手機號格式錯誤!");
}else {
User user = userService.login(account, password);
log.info("user", user);
if(user==null){
return new JSONResult(400,"賬號或密碼錯誤!");
}else {
if(user.getStatus()!=2){
return new JSONResult(400,"郵箱未註冊或未啟用!");
}
- 總結:
驗證需要前端後端都進行驗證,不能感覺前端驗證了就安全了,bug是未知的,風險就是未知的,可能會導致不可挽回的錯誤,在驗證的同時,不呼叫資料庫來實現驗證,上線的專案,資料庫注入一樣的危險!!!
相關推薦
註冊登入——前端、後臺驗證(正則表示式)
註冊 介面如圖 前端驗證 html頁面程式碼 <form id="form_reg"> <div> <input type
swift 郵箱、密碼、手機號、身份證驗證正則
/驗證郵箱 class func validateEmail(email: String) -> Bool { if email.count == 0 { return false } let emailReg
swift 手機號、郵箱、網址等正則表示式驗證
import Foundation enum Validate { case email(_: String) case phoneNum(_: String) case carNum(_: String) case username(_: String) case
【前端】JavaScript與正則表示式
一、正則表示式(regular expression簡稱res) 1、定義 一個正則表示式就是由普通字元以及特殊字元(稱為元字元)組成的文字模式。該模式描述在查詢文字主體時待匹配的一個或多個字串。正則表示式作為一個模板,將某個字元模式與所搜尋的字串進行匹配。 2、作用 正則表示式
JAVA後端的多IP地址驗證正則表示式
最近在開發專案時遇到了需要驗證多個IP地址的情況,於是想用正則表示式來解決問題,在網上搜了很多,大部分都是單個IP地址的正則驗證,或者是有多個IP地址驗證,但並不嚴謹,於是我結合了一下,並通過不停的測試,最後得到了以下這個算是比較嚴謹,並
港澳臺、大陸身份證正則表示式
var patternMainLand = /^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/;//大陸 var patternHongkong = /^((\s?[A-Za-z])|([A-Za-z
最新手機號碼、電話號碼正則表示式
補充: 正則表示式--驗證手機號碼:13[0-9]{9} 實現手機號前帶86或是+86的情況:^((\+86)|(86))?(13)\d{9}$ 電話號碼與手機號碼同時驗證:(^(\d{3,4}-)?\d{7,8})$|(13[0-9]{9}) &nb
web前端之如何書寫正則表示式
正則表示式 正則表示式,又稱規則表示式。(英語:Regular Expression,在程式碼中常簡寫為regex、regexp或RE),電腦科學的一個概念。正則表示式通常被用來檢索、替換、校驗那些符合某個模式(規則)的文字。 RegExp物件 在爪窪死苦瑞per特中,Re
python處理異常、日誌以及正則表示式
異常捕獲 高階語言通常都內建了一套try…except…finally…的錯誤處理機制,Python也不例外。而且只要在合適的層次去捕獲錯誤就可以了。 def foo(s): return 10 / int(s) def bar(s):
文字框驗證正則表示式
只能輸入數字: <input type="text" id="e_Phone" name="e_Phone" onkeyup="this.value=this.value.replace(/\D/g,'')"
前端開發中常用正則表示式
整數或者小數:^[0-9]+\.{0,1}[0-9]{0,2}$ 只能輸入數字:”^[0-9]*$” 只能輸入n位的數字:”^\d{n}$” 只能輸入至少n位的數字:”^\d{n,}$” 只能輸入m~n位的數字:”^\d{m,n}$” 只能輸入零和非零開頭的數字:”^(0|
常用的JavaScript驗證正則表示式
下面都是我收集的一些比較常用的正則表示式,因為平常可能在表單驗證的時候,用到的比較多。特發出來,讓各位朋友共同使用。呵呵。 匹配中文字元的正則表示式: [u4e00-u9fa5] 評註:匹配中文還真是個頭疼的事,有了這個表示式就好辦了 匹配雙位元組字元(包括漢字在內)
驗證正則表示式(一),同時驗證手機號碼和固定電話號碼
var reg=^((13[0-9])|(14[5|7])|(15([0-3]|[5-9]))|(18[0,5-9]))\d{8}$|^0\d{2,3}-?\d{7,8}$;//正則表示式 主要實現程式碼如下: function CheckPhone(number){
常用js限制輸入、常用js正則表示式
不允許輸入空格 onkeyup="this.value=this.value.replace(/\s+/g,'')" 只允許輸入數字 onkeyup="this.value=this.value.re
JAVA日期驗證 正則表示式,包括潤二月
package cinda; import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement;import java.ut
常用的JS驗證—正則表示式
1。date日期var _reg = /^[0-9]{4}-(((0?[13578]|(10|12))-(0?[1-9]|[1-2][0-9]|3[0-1]))|(0?2-(0[1-9]|[1-2][
String、動態規劃——正則表示式匹配
public class Solution { public boolean isMatch(String s, String p) { if(s == null||p == null) return false; boolean [][]fla
最新手機號碼驗證正則表示式
現有手機號段:移動:134 135 136 137 138 139 147 148 150 151 152 157 158 159 172 178 182 183 184 187 188 198聯通:130 131 132 145 146 155 156 166 171 17
php郵箱驗證正則表示式
class isEmail{ public function run($email){ if(ereg("^([a-zA-Z0-9_-])[email protected]([a-zA-Z0-9_-])+(.[a-zA
easyUI驗證 正則表示式
return /^(?:(?!0000)[0-9]{4}([-]?)(?:(?:0?[1-9]|1[0-2])\1(?:0?[1-9]|1[0-9]|2[0-8])|(?:0?[13-9]|1[0-2])\1(?:29|30)|(?:0?[13578]|1[02])\1(?:31))|(?:[0-9