thinkPHP5——ajax註冊登入
阿新 • • 發佈:2019-02-02
主要檔案:
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'=>'驗證碼必須是數字'
];
}