web註冊頁面動態匹配驗證之使用者驗證php實現一

來源:互聯網
上載者:User
這篇文章主要介紹了關於web註冊頁面動態匹配驗證之使用者驗證php實現一,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

需要知識:1.php資料庫連接

2.php 正則表達匹配

3.ajax --

  • HTML 和 CSS 基礎

  • JavaScript 基礎

1 :

建立好輸入框:

<input name="username" type="text" class="form-control" id="contact_username" onkeyup="loadXMLDoc(this.value)" placeholder="使用者名稱" required/>            <span id="txtHint"></span>

2:

js 實現 提示效果:(原文出自:點擊開啟連結)

function loadXMLDoc(str){    if (str.length==0)    {        document.getElementById("txtHint").innerHTML="";        return;    }    var xmlhttp;    //檢查瀏覽器是否支援 XMLHttpRequest 對象    if (window.XMLHttpRequest)    {        // IE7+, Firefox, Chrome, Opera, Safari 瀏覽器執行代碼        xmlhttp=new XMLHttpRequest();    }    else    {        // IE6, IE5 瀏覽器執行代碼        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");    }    xmlhttp.onreadystatechange=function()    {        if (xmlhttp.readyState==4 && xmlhttp.status==200)        {            //responseText獲得字串形式的響應資料。            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;        }    }    xmlhttp.open("GET","../common/verify.php?v="+str,true);    xmlhttp.send();}

3:

php代碼實現動態驗證:(驗證有缺陷,因為是自己寫的,有好多地方不完美,我會繼續改善)

<?php//註冊驗證----------$v=trim($_GET['v']);     //擷取使用者輸入的帳號$hint = "";  //用作返回輸出//判斷是帳號還是密碼,或者其他匹配    //判斷輸入的賬帳號長度是否大於0    if (strlen($v) > 0)    {        //使用者驗證        //1.必須以字母開頭        if(preg_match("/^[a-z]/",$v)){            //2.至少5個字元            if(preg_match("/^[a-z][\w]{4}/",$v))            {                echo $v;                $hint = "";  //當滿足時,讓它輸入空 因為前面不滿足賦值了                //資料庫建立串連                require "mysqli.php";                //資料庫查詢語句--查詢輸入的帳號是否存在                $sql="select `username` from `user` where `username`='$v'";                $result = mysqli_query($conn, $sql);                //當mysqli_num_rows($result)> 說明查到裡資料                if(mysqli_num_rows($result) > 0){                    $hint ="該使用者已存在!";                }else{                    $hint = "該使用者可用";                }                mysqli_close($conn); //關閉資料庫連接            }else{                $hint = "至少5個字元!";            }        }else{            $hint = "必須以字母開頭!";        }    }if ($hint == ""){    $response="";}else{    $response=$hint;}//列印返回echo $response;?>
更新:(2018年6月5日14:31:00)
//判斷輸入的賬帳號長度是否大於0if (strlen($v) > 0) {    //使用者驗證    //1.必須以字母開頭    if (preg_match("/^[a-z]/", $v)) {        //2.至少5個字元最長不超過11個字元        if (strlen($v) < 5 || strlen($v) > 11) {            $hint = "至少5個字元,最長不超過11個字元!";        } else {            //3.模式比對            if (preg_match("/^[a-z][\w]{2,10}$/", $v)) {                echo $v;                $hint = "";  //當滿足時,讓它輸入空 因為前面不滿足賦值了                //資料庫建立串連                require "mysqli.php";                //資料庫查詢語句--查詢輸入的帳號是否存在                $sql = "select `username` from `user` where `username`='$v'";                $result = mysqli_query($conn, $sql);                //當mysqli_num_rows($result)> 0 說明查到裡資料                if (mysqli_num_rows($result) > 0) {                    $hint = "該使用者已存在!";                } else {                    $hint = "該使用者可用";                }                mysqli_close($conn); //關閉資料庫連接            }else {                $hint = "使用者名稱只能是數值,字母,底線";            }        }    } else {        $hint = "必須以字母開頭!";    }}

4:

完全出自自己的理解自己口語表達解釋的,不夠專業也不夠標準,如有出錯地方歡迎指出:QQ363491343

解釋:當我們在使用者名稱輸入框內輸入要註冊的使用者名稱時,

函數調用loadXMLDoc() 方法 (見第二步),從而進行相關動態驗證(具體介紹見點擊開啟連結)


php代碼解釋:

1.

$v=trim($_GET['v']);

用於獲得使用者動態輸入的使用者名稱;

2.

if (strlen($v) > 0)

使用者輸入的使用者名稱必須大於0;這是最基本的。

3.

if(preg_match("/^[a-z]/",$v)){

然後我規定使用者名稱必須以字母開頭,不區分大小寫

4.

這是我想使用者名稱至少5個字元;

5.

echo $v;$hint = "";  //當滿足時,讓它輸入空 因為前面不滿足賦值了//資料庫建立串連require "mysqli.php";//資料庫查詢語句--查詢輸入的帳號是否存在$sql="select `username` from `user` where `username`='$v'";$result = mysqli_query($conn, $sql);//當mysqli_num_rows($result)> 說明查到裡資料if(mysqli_num_rows($result) > 0){    $hint ="該使用者已存在!";}else{    $hint = "該使用者可用";}mysqli_close($conn); //關閉資料庫連接

這部分就是當前面都滿足時候,就在資料庫裡面動態尋找,看是否使用者已經存在。

6.

if ($hint == ""){    $response="";}else{    $response=$hint;}//列印返回echo $response;

最後輸出返回要顯示的內容;

這裡我經過自己驗證,在PHP裡面echo 輸出的都是返回的內容。

如果php有警告資訊,或者出現錯誤,都會返回到前端去。

如果你ajax 學的不錯,那麼下面代碼也就好理解了:

xmlhttp.onreadystatechange=function()    {        if (xmlhttp.readyState==4 && xmlhttp.status==200)        {            //responseText獲得字串形式的響應資料。            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;        }    }


嗯,以上是我自己寫的使用者帳號通過伺服器實現動態驗證效果,也是邊學邊做,希望能夠幫到和我一樣的新手同學。

如果有大佬在,歡迎指出錯誤與不足之處。


-----新增加內容:

當焦點離開輸入框,隱藏提示資訊
   //當焦點離開輸入框,隱藏提示資訊function upperCase(){    document.getElementById("txtHint").innerHTML="";}

<input name="username" type="text" class="form-control" id="contact_username" onkeyup="loadXMLDoc(this.value)" onblur="upperCase()" placeholder="使用者名稱" required/><span id="txtHint"></span>

裡面添加一樣onblur 事件

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.