vue와 php로 로그인을 구현하는 방법
로그인을 구현하기 위해 Vue에 PHP를 추가하는 방법: 1. 로그인 부분의 코드 파일을 생성합니다. 2. Javascript 코드를 생성합니다. 3. Vue 프로젝트에서 PHP를 사용하여 사용자 등록 및 로그인 기능을 수행합니다.
이 문서의 운영 환경: Windows 7 시스템, PHP 버전 7.1, Dell G3 컴퓨터.
Vue + 사용자 등록 및 로그인 기능을 위한 PHP
어플리케이션에서 가장 기본적인 것은 사용자 등록 및 로그인 기능입니다. 이 블로그에서는 vue 프로젝트에서 PHP를 사용하여 사용자를 수행하는 방법을 요약합니다. 등록 및 로그인 기능.
로그인 부분:
HTML
<div id="app" class="container"> <div style="text-align:center;margin-top:60px;"> <img src="../src/icon/vlogo.png" style="width:20rem;height:auto;" alt=""> </div> <form class="form middle"> <br> <div class="form-group"> <input type="text" class="form-control input100" v-model="userid" placeholder="用户名 / 邮箱"/> </div> <div class="form-group"> <input type="password" class="form-control input100" v-model="usercode" placeholder="密码" @keyup.13="login" /> </div> <label class="errorMsg" v-if="errorFlag" v-cloak >{{ errorMsg }}</label> <div class="form-group btn100"> <button type="button" @click="login" class="btn btn-primary btn100">登陆</button> </div> <div class="form-group btn100"> <a href="./registermobile.html" class="btn btn-default btn100">注册</a> </div> <h6 style="text-align:right;"> <a href="./findpassword.html" style="margin-right:2rem;">找回密码</a> </h6> <hr> <h6 style="text-align:center;margin-top:3rem;"> <a style="margin-right:2rem;">© vchenzhe</a> <a href='http://www.beian.gov.cn' style="text-decoration:none;color:black;" target='_blank'>闽ICP备19008574号-1</a> </h6> </form> </div>
Javascript
import $ from './js/jquery.js';import './css/mobilecommon.css';import Vue from '../node_modules/vue/dist/vue.js';$(function(){ var vm = new Vue({ el:"#app", data:{ userid:'', usercode:'', errorFlag:false, errorMsg:'' }, methods:{ login(){ var thisvue = this; if(thisvue.userid==''||thisvue.usercode=='') { thisvue.errorMsg = '请输入用户名和密码'; thisvue.errorFlag = true; } else{ $.ajax({ type:'POST', url:'../server/login.php', data:{ userid:thisvue.userid, usercode:thisvue.usercode }, success:function(res){ if(res[0].code==1) { thisvue.errorFlag = false; window.location.href="./homemobile.html"; } else{ thisvue.errorMsg = '账号或密码错误'; thisvue.usercode = ''; thisvue.errorFlag = true; } } }) } } } })})
PHP
<?php session_start(); header('Content-Type:application/json; charset=utf-8'); $myid = $_POST[userid]; $mycode = md5($_POST[usercode]); if($myid!=''&&$mycode!='') { $conn = new mysqli("localhost:3306", "root", "", "personal"); if ($conn != null) { $sql = "select * FROM user_login where user_id='$myid' or user_mail = '$myid' "; $result =$conn->query($sql); $resArray = mysqli_fetch_array($result); if($resArray["user_password"] == $mycode) { $_SESSION['chenzhe_user_id'] = $resArray['user_id']; $result_array[0] = ['code'=>'1','msg'=>'登陆成功']; echo json_encode($result_array); } else { $result_array[0] = ['code'=>'0','msg'=>'用户名或密码输入错误']; echo json_encode($result_array); } $conn->close(); } } else { $result_array[0] = ['code'=>'0','msg'=>'请输入用户名或密码']; echo json_encode($result_array); } ?>
등록 부분
HTML
<div class="container" style="margin-top:2rem;" id="app"> <ol class="breadcrumb btn100"> <li><a href="./indexmobile.html">返回</a></li> <li class="active">注册</li> </ol> <p class="errorMsg" v-if="errorFlag==1" v-cloak >{{errorMsg}}</p> <form class="form" id="registerForm"> <div class="form-group has-feedback"> <input type="text" @keyup="testUserIdFunc" v-model="userid" name="userid" minlength=9 maxlength=16 class="form-control input100" placeholder="用户名" required> <span v-show="testUserId" class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true" style="color:#5cb85c;"></span> </div> <div class="form-group"> <input type="text" v-model="username" name="username" maxlength=10 class="form-control input100" placeholder="昵称" required> </div> <div class="form-group has-feedback "> <input type="password" @keyup="readInfo" v-model="usercode" name="usercode" minlength=9 maxlength=20 class="form-control input100" placeholder="密码" required> <span v-show="testpass" class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true" style="color:#5cb85c;"></span> </div> <div class="form-group has-feedback "> <input type="password" @keyup="readInfo" v-model="usercodes" name="checkusercode" maxlength=20 class="form-control input100" placeholder="确认密码" required> <span v-show="testpass" class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true" style="color:#5cb85c;"></span> </div> <div class="form-group has-feedback "> <input type="email" @keyup="testmailFunc" v-model="usermail" name="usermail" class="form-control input100" placeholder="邮箱" required> <span v-show="testmail" class="glyphicon glyphicon-ok form-control-feedback" aria-hidden="true" style="color:#5cb85c;"></span> </div> <div class="form-group btn100" style="display:flex;" > <input type="number" v-model="code" class="form-control" placeholder="验证码" required> <button v-if="testUserId==0||testpass==false||usermail==''||testmail==false" type="button" class="btn btn-default btn80 btn-disabled" disabled style="margin-left:1rem;">获取验证码</button> <button v-show="btnGetCode==0" v-if="testUserId==1&&testpass==true&&usermail!=''&&testmail==true" type="button" class="btn btn-default btn80" @click="getCode" style="margin-left:1rem;">获取验证码</button> <button v-show="btnGetCode==1" type="button" class="btn btn-disabled btn80" disabled style="margin-left:1rem;">已发送({{ clock }}s)</button> </div> <div class="btn100"> <button type="button" class="btn btn-primary btn100" @click="register">注册</button> </div> </form> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="false"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button> <h4 class="modal-title" id="myModalLabel">消息</h4> </div> <div class="modal-body"> {{ errorMsg }} </div> <div class="modal-footer"> <button type="button" class="btn btn-primary" data-dismiss="modal">确认</button> </div> </div><!-- /.modal-content --> </div><!-- /.modal --> </div> <h6 style="text-align:center;margin-top:3rem;"> <a href="./index.html" style="margin-right:2rem;">电脑版</a> <a href='http://www.beian.gov.cn' style="text-decoration:none;color:black;" target='_blank'>闽ICP备19008574号-1</a> </h6> </div>
Javascript
import $ from './js/jquery.js';import './css/mobilecommon.css';import Vue from '../node_modules/vue/dist/vue.js';$(function(){ var vm = new Vue({ el:"#app", data:{ errorMsg:'', errorFlag:0, //填写注册信息 userid:'', username:'', usercode:'', usercodes:'', usermail:'', //验证注册信息 code:'', btnGetCode:0, //用于判断当前是否获取了一次验证码,默认是0,获取一次后改成1 testcode:0, //用于判断当前是否完成了验证码验证,默认是0,验证通过是1 clock:60, testUserId:false,//检测当前用户名是否已经注册 testpass:false,//检测密码安全 testmail:false, //检测邮箱是否被注册过了 }, methods:{ testUserIdFunc(){ //检测用户名是否已经注册 var thisvue = this; var testall = /^[a-zA-Z][a-zA-Z0-9]*$/; //只能是数字和字母 if(thisvue.userid=='') { thisvue.testUserId = false; return 0; } else if(!testall.test(thisvue.userid)) //检测英文和数字 { this.errorFlag = 1; this.errorMsg = '用户名必须以英文开头,且只能由英文和数字组成'; } else if(thisvue.userid.length<9) { thisvue.errorFlag = 1; thisvue.errorMsg = '用户名长度须在9-16之间'; thisvue.testUserId = false; return 0; } else{ $.ajax({ type:'POST', url:'../server/testUserId.php', data:{ user_id:thisvue.userid }, success:function(res) { if(res.code==1) { thisvue.testUserId = true; thisvue.errorFlag = 0; } else{ thisvue.testUserId = false; thisvue.errorFlag = 1; thisvue.errorMsg = res.msg; } } }) } }, readInfo(){ //检索密码安全等 var result = 1; var testall = /^(?!\d+$)[\da-zA-Z]+$/; //只能是数字和字母 if(this.usercode.length<9) //检测长度 { this.errorFlag = 1; this.errorMsg = '密码长度须在9-20个字符,只能由英文和数字组成'; result = 0; } else if(!testall.test(this.usercode)) //检测英文和数字 { this.errorFlag = 1; this.errorMsg = '密码只能使用英文+数字,且不能为纯数字'; result = 0; } else if(this.usercode!=this.usercodes) { this.errorFlag = 1; this.errorMsg = '两次密码输入不一致'; result = 0; } /*else if(testenglish.test(this.usercode)) { this.errorFlag = 1; this.errorMsg = '密码不能为纯数字'; result = 0; }*/ if(result==1) { this.errorFlag = 0; this.testpass = 1;//如果密码验证成功,则通过 } return result; }, register(){ var thisvue = this; if(thisvue.usermail==''||thisvue.code=='') { thisvue.errorMsg = '你还没有进行邮箱验证'; thisvue.errorFlag = 1; } else{ thisvue.verifyCode(); $.ajax({ url:'../server/register.php', type:'POST', data:$("#registerForm").serialize(), success:function(res) { if(res.code==1) { window.location.href = 'indexmobile.html'; } else{ thisvue.errorMsg = '注册失败'; thisvue.errorFlag = 1; } } }) } }, getCode(){ //获取验证码 if(this.userid==''||this.username==''||this.usercode==''||this.usercodes==''||this.usermail=='') { this.errorFlag = 1; this.errorMsg = '请填写全部的信息后获取验证码'; } else if(this.usercode!=this.usercodes) { this.errorFlag = 1; this.errorMsg = '两次密码输入不一致'; } else{ var thisvue = this; thisvue.btnGetCode = 1; //把获取验证码按钮禁用 var timer1 = setInterval(function(){thisvue.clock=thisvue.clock-1;},1000); setTimeout(function(){ clearInterval(timer1); thisvue.btnGetCode=0; thisvue.clock=60; },60000); //发送邮件 $.ajax({ type:'POST', url:'../server/mail/sendMail.php', async:false, data:{ address:thisvue.usermail }, success:function(res) { if(res.code==1) { thisvue.errorFlag = 1; thisvue.errorMsg = '我们发送了一封邮件到你的邮箱,请尽快验证' } } }) } }, verifyCode(){ //验证验证码 var thisvue =this; if(thisvue.code>100000&&thisvue.code<999999) { $.ajax({ type:'POST', url:'../server/mail/verifyCode.php', data:{code:thisvue.code}, success:function(res) { if(res.code=='1') { thisvue.testcode=1; } else{ thisvue.errorFlag=1; thisvue.errorMsg='验证码不正确,请重新输入'; return 0; } } }) } }, testmailFunc(){ var thisvue = this; if(this.usermail!=''&&this.usermail.indexOf('@')!='') { $.ajax({ type:'POST', url:'../server/testmail.php', data:{ user_mail:thisvue.usermail }, success:function(res){ if(res.code==1) { thisvue.testmail = true; thisvue.errorFlag = 0; } else{ thisvue.testmail = false; thisvue.errorFlag = 1; thisvue.errorMsg = '此邮箱已被注册,换个邮箱试试吧'; } } }) } } } })})
추천 학습: "PHP 비디오 튜토리얼"
위 내용은 vue와 php로 로그인을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP에서 최종 키워드는 클래스가 상속되고 메소드가 덮어 쓰는 것을 방지하는 데 사용됩니다. 1) 클래스를 최종적으로 표시 할 때는 수업을 상속받을 수 없습니다. 2) 메소드를 최종으로 표시 할 때는 메소드를 서브 클래스로 다시 작성할 수 없습니다. 최종 키워드를 사용하면 코드의 안정성과 보안이 보장됩니다.

vue.js에서 JS 파일을 참조하는 세 가지 방법이 있습니다. & lt; script & gt; 꼬리표;; mounted () 라이프 사이클 후크를 사용한 동적 가져 오기; Vuex State Management Library를 통해 수입.

vue.js의 시계 옵션을 사용하면 개발자가 특정 데이터의 변경 사항을들을 수 있습니다. 데이터가 변경되면 콜백 기능을 트리거하여 업데이트보기 또는 기타 작업을 수행합니다. 구성 옵션에는 즉시 콜백을 실행할지 여부와 DEEP를 지정하는 즉시 포함되며, 이는 객체 또는 어레이에 대한 변경 사항을 재귀 적으로 듣는 지 여부를 지정합니다.

vue.js에서 게으른 로딩을 사용하면 필요에 따라 부품 또는 리소스를 동적으로로드 할 수 있으므로 초기 페이지로드 시간을 줄이고 성능을 향상시킵니다. 특정 구현 방법에는 & lt; keep-alive & gt를 사용하는 것이 포함됩니다. & lt; 구성 요소는 & gt; 구성 요소. 게으른 하중은 FOUC (Splash Screen) 문제를 일으킬 수 있으며 불필요한 성능 오버 헤드를 피하기 위해 게으른 하중이 필요한 구성 요소에만 사용해야합니다.

vue.js에서 bootstrap 사용은 5 단계로 나뉩니다 : Bootstrap 설치. main.js.의 부트 스트랩 가져 오기 부트 스트랩 구성 요소를 템플릿에서 직접 사용하십시오. 선택 사항 : 사용자 정의 스타일. 선택 사항 : 플러그인을 사용하십시오.

vue.js는 이전 페이지로 돌아갈 수있는 네 가지 방법이 있습니다. $ router.go (-1) $ router.back () 사용 & lt; router-link to = & quot;/quot; Component Window.history.back () 및 메소드 선택은 장면에 따라 다릅니다.

Vue DevTools를 사용하여 브라우저 콘솔에서 vue 탭을 보면 VUE 버전을 쿼리 할 수 있습니다. npm을 사용하여 "npm list -g vue"명령을 실행하십시오. package.json 파일의 "종속성"객체에서 vue 항목을 찾으십시오. Vue Cli 프로젝트의 경우 "vue -version"명령을 실행하십시오. & lt; script & gt에서 버전 정보를 확인하십시오. vue 파일을 나타내는 html 파일의 태그.

CSS 애니메이션 또는 타사 라이브러리를 사용하여 VUE에서 Marquee/Text Scrolling Effects를 구현하십시오. 이 기사는 CSS 애니메이션 사용 방법을 소개합니다. & lt; div & gt; CSS 애니메이션을 정의하고 오버플로를 설정하십시오 : 숨겨진, 너비 및 애니메이션. 키 프레임을 정의하고 변환을 설정하십시오 : Translatex () 애니메이션의 시작과 끝에서. 지속 시간, 스크롤 속도 및 방향과 같은 애니메이션 속성을 조정하십시오.
