1. 程式人生 > >註冊登入——前端、後臺驗證(正則表示式)

註冊登入——前端、後臺驗證(正則表示式)

註冊

  • 介面如圖

    這裡寫圖片描述

  • 前端驗證

    • 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>&nbsp;&nbsp;
                        <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