1. 程式人生 > >thinkPHP5——ajax註冊登入

thinkPHP5——ajax註冊登入

主要檔案:

app\index\model\UsersModel.php檔案程式碼

namespace app\index\model;
use think\Model;

class UsersModel extends Model{
    protected $pk = 'id';//設定主鍵
}

一、登入

1.login.html

郵箱:
<input type="email" id="email" name="email">
密碼:
<input type="password" id="password" name="password" >
<button type="submit" onclick="login_ajax()"> 登入  </button>

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>//jq必須
<script>
function login_ajax(){
    var email=$('#email').val();
    var pas=$('#password').val();
    $.get("http://angryshan.com/index.php/index/login/doLogin.html",
        {"email":email,"password":pas},function(data){
        if(data=='0'){
            window.location="http://angryshan.com/index.php/index/index/index";
        }
        else {
            alert(data);
        }
    });
}
</script>

2.login.php

namespace app\index\controller;
use think\Controller;
use app\index\model\UsersModel;
class Login extends Controller{
    public function doLogin(){
        $user=new UsersModel;
        $user->email = input('email');
        $user->password = input('password');

        $result = $this->validate($user,'Vlogin');
        if(true!==$result){
            echo $result;
        }
        else{
            //驗證使用者名稱
            $tn=db('member_content')->where('email',input('email'))->find();
            //驗證密碼
            $tp=db('member')->where('password',md5(input('password')))->find();
            if(empty($tn)||empty($tp)){
                echo '使用者名稱或密碼錯誤';
            }
            else{
            //驗證通過
            //cookie,非法登入
            cookie('id',$tp['username'],3600);
            //驗證通過,頁面跳轉
            //$this->redirect(url('index/index'));
            //傳值,判斷是否驗證通過
            $arr=0;
            echo $arr;
            }
        }
    }
}

二、註冊(兩者方法差不多)

1.register.html

使用者:<input type="text" id="username" name="username">
密碼:<input type="password" id="password" name="password">
確認密碼:<input type="password" id="repassword" name="repassword" >
郵箱:<input type="email" id="email" name="email">
<button type="submit" onclick="register_ajax()">  註冊 </button>

<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
function register_all(){
    var pas=$('#password').val();
    var repas=$('#repassword').val();
    var email=$('#email').val();

    $.get({url:('../register/register.html')},
        {"password":pas,"repassword":repas,"email":email},
        function(data){
            if (data=='0'){
                var i=window.confirm("註冊成功,跳轉登入頁面");
                if(i!=0){
                    window.location="http://angryshan.com/index.php/index/login/index";
                }
            }
            else {
                alert(data);
            }
    });  
}
</script>

2.Register.php

use think\Controller;
use think\Db;
use app\index\model\UsersModel;

class Register extends Controller{
    public function register(){
        $user=new UsersModel;
        $user->password = input('password');
        $user->repassword=input('repassword');
        $user->email = input('email');

        $result = $this->validate($user,'Vregist');
        if(true!==$result){
            echo $result;
        }
        else{
            $data1=[
                'password'=>md5(input('password'))
            ];
            $data2=[
                'email'=>input('email'),
            ];

           Db('member')->insert($data1)&&Db('member_content')->insert($data2);
           $arr=0;
           /*$result=json_encode($arr);
           header('Content-Type:application/json');//這個型別宣告非常關鍵
           echo $result;*/
           echo $arr;
        }
    }
}

附加註冊驗證器Vregist.php

namespace app\index\validate;

use think\Validate;

class Vregist extends Validate
{
    protected $rule = [
        'username'=>'require|max:20|unique:member',
        'password'  =>  'require|min:6',
        'repassword'=>'require|confirm:password',
        'email' =>  'require|email|unique:member_content',
        'code'=>'number',

    ];

    protected $message = [
        'username.require'=>'賬號不能為空',
        'username.max'=>'賬號字數設定不能超過20位',
        'username.unique'=>'該賬號已經註冊',
        'password.require'  =>  '密碼不能為空',
        'password.min'=>'密碼不得少於6位',
        'repassword.require'=>'確認密碼不能為空',
        'repassword.confirm'=>'兩次輸入密碼不一致',
        'email.require' =>  '郵箱不能為空',
        'code'=>'驗證碼必須是數字'
    ];

}