>  기사  >  백엔드 개발  >  웹 등록 페이지 동적 매칭 확인 사용자 확인 PHP 구현(정식 버전) 2

웹 등록 페이지 동적 매칭 확인 사용자 확인 PHP 구현(정식 버전) 2

不言
不言원래의
2018-06-06 10:38:191158검색

이 글은 주로 웹 등록 페이지의 동적 일치 확인에 대한 사용자 확인 PHP 구현(풀 버전)을 소개합니다. 이는 특정 참조 값을 가지며 이제 필요한 친구가 참조할 수 있도록 공유됩니다.

소개:

혹시 웹 등록 페이지 동적 일치 확인 사용자 확인 PHP 구현 1에 대해 이해하고 계시나요?

이 글을 보는 것은 웹 등록 페이지에서 동적 일치 확인의 PHP 구현에 대한 사용자 확인과 밀접한 관련이 없습니다. 이 글을 직접 읽을 수도 있습니다.

텍스트:

1.첫번째 폼을 생성하고 각 입력창을 준비합니다:

코드: (스타일 등 관련 없는 내용은 생략)

<form action="register.php" method="post" class="subscribe-form">  <p class="row form-section">    
<p class="col-md-7 col-sm-7 col-xs-7">      
<input name="username" type="text" class="form-control" id="contact_username"             
onkeyup="loadXMLDoc(this.value,this.id)" onblur="upperCase()" placeholder="用户名" required/>      
<span id="txtHint_name"></span>      
<input name="password" type="password" class="form-control" id="contact_password"             
onkeyup="loadXMLDoc(this.value,this.id)" onblur="upperCase()" placeholder="请输入密码" required/>      
<span id="txtHint_pass"></span>      
<input name="password_" type="password" class="form-control" id="contact_password_"             
onkeyup="loadXMLDoc(this.value,this.id)" onblur="upperCase()" placeholder="输入确认密码" required/>      
<span id="txtHint_pass_"></span>      
<input name="phone" type="text" class="form-control" id="contact_phone"             
onkeyup="loadXMLDoc(this.value,this.id)" onblur="upperCase()" placeholder="请输入手机号码" required/>      
<span id="txtHint_phone"></span>      
<input name="email" type="text" class="form-control" id="contact_email"             
onkeyup="loadXMLDoc(this.value,this.id)" onblur="upperCase()" placeholder="填入邮箱" required/>      
<span id="txtHint_email"></span>    </p>  </p>  <p class="col-md-5 col-sm-5 col-xs-5">   
<button type="submit" class="tm-btn-subscribe" name="register">注册</button>  </p></form>

코드 설명:

<span id="txtHint_name"></span>

은 확인 프롬프트 정보를 표시하는 데 사용됩니다. loadXMLDoc(this.value,this.id)의 두 매개변수는

입력 상자의 내용과 입력 상자의 id 이름입니다. upperCass() 메소드가 사용됩니다:

当焦点离开输入框,隐藏提示信息
   //当焦点离开输入框,隐藏提示信息function upperCase(){    
   //event.target.id 获取id 名称    
   if(event.target.id=="contact_username") {        
   //responseText 获得字符串形式的响应数据。        
   document.getElementById("txtHint_name").innerHTML="";    
   } else if(event.target.id=="contact_password") {
        document.getElementById("txtHint_pass").innerHTML="";    } 
     else if(event.target.id=="contact_password_") {
        document.getElementById("txtHint_pass_").innerHTML="";    } 
      else if(event.target.id=="contact_phone") {
        document.getElementById("txtHint_phone").innerHTML="";    } 
      else if(event.target.id=="contact_email") {
        document.getElementById("txtHint_email").innerHTML="";    }
}

렌더링은 다음과 같습니다:

(확인 프롬프트 정보)


(확인 성공 숨김)


2.js 구현

( 여기에 쉬운 관리를 위한 별도의 js 파일이 있습니다)

function loadXMLDoc(str,id)
{    if (str.length==0)
    {
        document.getElementById("txtHint_name").innerHTML="";        
        document.getElementById("txtHint_pass").innerHTML="";        
        document.getElementById("txtHint_pass_").innerHTML="";        
        document.getElementById("txtHint_phone").innerHTML="";        
        document.getElementById("txtHint_email").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)
        {            if(id=="contact_username") {                
        //responseText 获得字符串形式的响应数据。                
        document.getElementById("txtHint_name").innerHTML=xmlhttp.responseText;            
        } else if(id=="contact_password") {
                document.getElementById("txtHint_pass").innerHTML=xmlhttp.responseText;            
                } else if(id=="contact_password_") {
                document.getElementById("txtHint_pass_").innerHTML=xmlhttp.responseText;            
                } else if(id=="contact_phone") {
                document.getElementById("txtHint_phone").innerHTML=xmlhttp.responseText;            
                } else if(id=="contact_email") {
                document.getElementById("txtHint_email").innerHTML=xmlhttp.responseText;            
                }
        }
    }
    xmlhttp.open("GET","../common/verify.php?v="+str+"&id="+id,true);    
    xmlhttp.send();}    //当焦点离开输入框,隐藏提示信息 
    function upperCase(){     
    //event.target.id 获取id 名称     
    if(event.target.id=="contact_username") {         
    //responseText    获得字符串形式的响应数据。         
    document.getElementById("txtHint_name").innerHTML="";     
    } else if(event.target.id=="contact_password") {
         document.getElementById("txtHint_pass").innerHTML="";     
         } else if(event.target.id=="contact_password_") {
         document.getElementById("txtHint_pass_").innerHTML="";     
         } else if(event.target.id=="contact_phone") {
         document.getElementById("txtHint_phone").innerHTML="";     
         } else if(event.target.id=="contact_email") {
         document.getElementById("txtHint_email").innerHTML="";     
         }
 }

코드 설명:

str은 입력 상자의 내용이고, id는 입력 상자의 id 이름이며, id는 어떤 입력 상자가 있는지 결정하는 데 사용됩니다.

 if(id=="contact_username") {

는 사용자 이름 입력 상자입니다.

매개 변수 전달에 대한 설명:

 xmlhttp.open("GET","../common/verify.php?v="+str+"&id="+id,true);

str, id를 통해 사용자 이름과 입력 상자 ID를 서버에 전달하고 확인을 위해 PHP 코드를 사용합니다.

3.php 코드:

(사용자 계정 및 비밀번호 확인)

<?php
//注册验证----------
$v = trim($_GET[&#39;v&#39;]);     //获取用户输入的信息
$id = trim($_GET[&#39;id&#39;]);   //获取id 用来判断是什么验证$hint = "";  
//用作返回输出//判断是账号还是密码,或者其他匹配
if($id=="contact_username") {  //账号验证    
//判断输入的账账号长度是否大于0    
if (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 = "必须以字母开头!";        
}    
}
} else if($id=="contact_password") {  //密码验证    
//判断输入的密码长度是否大于0    
if (strlen($v) > 0) {        
//1.必须以字母开头        
if (preg_match("/^[a-z]/", $v)) {            
//2.至少8个字符最长不超过16个字符            
if (strlen($v) < 8 || strlen($v) > 11) {                
$hint = "密码至少8个字符,最长不超过16个字符!";            
} else {                
//3.模式匹配                
if (preg_match("/^[a-z][\w]{2,16}$/", $v)) {                    
$hint = "密码可用";                
} else {                    
$hint = "密码只能是数值,字母,下划线";                

}            
}        
} else {            
$hint = "必须以字母开头!";        
}    
}

비밀번호 확인 확인:

} else if($id=="contact_password_") {  //确认密码    //因为是确认密码,只需要判断和上一次密码是否相同

보시다시피, 마지막 비밀번호와 동일한지 여부만 확인하면 되므로 저는 임시변수를 저장할 데이터를 생성해야 합니다.

하지만 이 PHP 파일은 지속적으로 업데이트되므로 데이터베이스를 사용하여 임시 데이터를 저장하는 레코드를 생성합니다.

다음과 같습니다.


그러면 이 레코드는 지속적으로 업데이트됩니다.

$sql = "update `user` set `password`='$pass' where `id`=1 ";

그래서 새 비밀번호는 검증됨 :

if($id=="contact_password") {  //密码验证    
//判断输入的密码长度是否大于0    
if (strlen($v) > 0) {        
//1.必须以字母开头        
if (preg_match("/^[a-z]/", $v)) {            
//2.至少8个字符最长不超过16个字符            
if (strlen($v) < 8 || strlen($v) > 16) {                
$hint = "密码至少8个字符,最长不超过16个字符!";            
} else {                
//3.模式匹配                
if (preg_match("/^[a-z][\w]{2,16}$/", $v)) {                    
//当密码可用时,我们对密码进行2次md5加密                   
$pass = md5(md5($v));                   
// 存到数据库                    
require "mysqli.php";                    
//因为数据库里面存在了,所以只需要更新就可以                    
//$sql = "insert into user(`password`,`id`,`username`) value ('$v',1,'mmjc')";                    
$sql = "update `user` set `password`='$pass' where `id`=1 ";                    
if(mysqli_query($conn, $sql)){                        
$hint = "密码可用";                    
}                     
mysqli_close($conn);                
} else {                    
$hint = "密码只能是数值,字母,下划线";                
}            
}        
} else {            
$hint = "必须以字母开头!";        
}    
}
}

코드 설명:

주로 데이터베이스 업데이트 문을 통해 실시간 데이터 업데이트가 구현되어 동적 검증이 이루어집니다.

 $sql = "update `user` set `password`='$pass' where `id`=1 ";

그럼 비밀번호 인증 확인 시간!

php 코드:

 if($id=="contact_password_") {  //确认密码    
 //当密码可用时,我们对密码进行2次md5加密    
 $pass = md5(md5($v));    // 查询第一输入密码存入的密码    
 require "mysqli.php";    //数据库查询语句--查询密码和第一次密码是否相同    
 $sql = "select `password` from `user` where id=1";    
 $result = mysqli_query($conn, $sql);    
 if (mysqli_num_rows($result) > 0) {        // 输出数据        
 $row = mysqli_fetch_assoc($result);        
 //判断两次密码是否相同        
 if( $pass==$row["password"]){            
 $hint = "两次密码相同可用";        
 }else{            
 $hint = "请与前一次密码保持一致!";        
 }
 }    
 mysqli_close($conn);}

코드 설명:

비밀번호는 두 번 확인되므로 데이터베이스에서 직접 임시 기록을 얻어와 사용자 입력과 비교합니다( 데이터베이스 쿼리 문).

사용자 비밀번호 확인이 완료된 후 휴대폰 번호 및 이메일 확인을 수행합니다.

휴대폰 번호 확인:

if($id=="contact_phone") {    
//1.手机号码必须以1开头    
if (preg_match("/^[1]/", $v)) {        
if(strlen($v) != 11){            
$hint = "手机号码为11位";        
}else if(preg_match("/^[1][0-9]{10}$/",$v)){            
require "mysqli.php";            
//查询数据库里面是否存在已有的手机号码            
$sql = "select  `phone` from `user` where `phone`='$v' ";            
$result = mysqli_query($conn, $sql);            
if (mysqli_num_rows($result) > 0) {                
$row = mysqli_fetch_assoc($result);                
//判段用户输入的密码是否和数据库里面的相同                
if ($v == $row["phone"]) {                    
$hint = "该手机已被注册!";                
} else {                    
$hint = "手机号码可用";                
}            }            
mysqli_close($conn);        
}else{            
$hint = "手机号码必须是数字!";        
}    
} else {        
$hint = "手机号码必须以1开头!";    
}
}

제한적 확인:

if($id=="contact_email") {    
$email_pattern = "/^[\w]+(\.[\w]+)*@[a-z0-9]+(\.[a-z0-9]+)+$/";    
if(preg_match($email_pattern,$v)){        
$hint = "合法邮箱、可用";    
}else {        
$hint = "你输入的邮箱不合法";    
}

관련 권장 사항:

웹 등록 페이지 동적 매칭 확인 사용자 확인 PHP 구현 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

위 내용은 웹 등록 페이지 동적 매칭 확인 사용자 확인 PHP 구현(정식 버전) 2의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.