主要文件:
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'=>'验证码必须是数字'
];
}