通过接口实现会员的无刷新登陆与注册
先上演示:https://demo.ecms.maiyapai.com/ecmsapi/index.php?mod=user&act=index
本示例主要实现会员登陆、会员注册、已登陆信息查询、退出登陆四个接口。(接口仅做学习与测试使用)
会员登陆
<?php
defined('ECMSAPI_MOD') or exit; // 防止直接仿问该接口文件
// 过滤非post方式请求
if(!$api->isPost()){
// 使用fun类是的json方法快速 输出json结构数据
$api->load('fun')->json(0 , '非法提交');
}
// 获取用户名并用RepPostVar函数过滤
$username = $api->post('username' , '' , 'RepPostVar');
// 获取用户密码并用RepPostVar函数过滤
$password = $api->post('password' , '' , 'RepPostVar');
// 获取是否开启验证码 并用intval函数过滤
$checkcode = $api->post('checkcode' , 0 , 'intval');
// 如果开启了验证码 先验证验证码是否正确
if($checkcode){
// 获取验证码并用RepPostVar函数过滤
$code = $api->post('code' , '' , 'RepPostVar');
// 验证码为空直接返回错误提示
if($code === ''){
$api->load('fun')->json(0 , '验证码不能为空');
}
// 用user类中的code方法 验证验证码是否正确 第一个参数填写login 表示当前验证的是登陆验证码
$isok = $api->load('user')->code('login' , $code); // $isok 将返回数字 -1 0 1 分别代表 -1超时 0失败 1成功
// 若没有通过验证将返回错误提示
if($isok !== 1){
$api->load('fun')->json(0 , $isok < 0 ? '验证码超时' : '验证码不正确');
}
$api->load('user')->code('login'); // 清理掉验证码
}
// 验证用户名与密码是否为空
if($username === ''){
$api->load('fun')->json(0 , '用户名不能为空');
}
if($password === ''){
$api->load('fun')->json(0 , '密码不能为空');
}
// 验证用户名与密码是否匹配
$isok = $api->load('user')->checkAccounts($username , $password);
// 若没有通过验证 返回错误信息
if(!$isok){
$api->load('fun')->json(0 , $api->load('user')->getError());
}
// 通过所有验证后 将提交的用户设置为登陆状态
$isok = $api->load('user')->setSession($username);
if(false === $isok){
// 设置失败后返回错误信息
$api->load('fun')->json(0 , $api->load('user')->getError());
}else{
// 设置成功后 获取用户数据
$user = $api->load('user')->one($username);
// 输入json数据
$api->load('fun')->json(1 , $user);
}
会员注册
<?php
defined('ECMSAPI_MOD') or exit;
// 过滤非post方式请求
if(!$api->isPost()){
// 使用fun类是的json方法快速 输出json结构数据
$api->load('fun')->json(0 , '非法提交');
}
// 加载一个user核心内 方便后面的调用
$userapi = $api->load('user');
// 获取用户名并用RepPostVar函数过滤
$username = $api->post('username' , '' , 'RepPostVar');
// 获取用户密码并用RepPostVar函数过滤
$password = $api->post('password' , '' , 'RepPostVar');
// 获取用户第二次输入的密码并用RepPostVar函数过滤
$password2 = $api->post('password2' , '' , 'RepPostVar');
// 获取是否开启验证码 并用intval函数过滤
$checkcode = $api->post('checkcode' , 0 , 'intval');
// 如果开启了验证码 先验证验证码是否正确 此步骤与登陆相同(除了验证码参数不一样)
if($checkcode){
// 获取验证码并用RepPostVar函数过滤
$code = $api->post('code' , '' , 'RepPostVar');
// 验证码为空直接返回错误提示
if($code === ''){
$api->load('fun')->json(0 , '验证码不能为空');
}
// 用user类中的code方法 验证验证码是否正确 第一个参数填写login 表示当前验证的是登陆验证码
$isok = $userapi->code('register' , $code); // $isok 将返回数字 -1 0 1 分别代表 -1超时 0失败 1成功
// 若没有通过验证将返回错误提示
if($isok !== 1){
$api->load('fun')->json(0 , $isok < 0 ? '验证码超时' : '验证码不正确');
}
$userapi->code('register'); // 清理掉验证码
}
// 验证用户名与密码是否为空
if($username === ''){
$api->load('fun')->json(0 , '用户名不能为空');
}
if($password === ''){
$api->load('fun')->json(0 , '密码不能为空');
}
if($password !== $password2){
$api->load('fun')->json(0 , '两次输入的密码不一致');
}
// 开始注册用户
// 定义要写入数据库的字段信息
// 注册时不没有传入checked 字段,将默认使用系统设置的状态
$data = [
'username' => $username,
'password' => $password
];
// 写入数据 写入成功后返回用户id
$userid = $userapi->insert($data);
if(false === $userid){
// 注册失败 返回错误信息
$api->load('fun')->json(0 , $userapi->getError());
}
// 根据实际情况 选择 注册成功后 是否将用户设置为登陆状态
$isok = $userapi->setSession($userid);
if(false === $isok){
// 设置失败后返回错误信息
$api->load('fun')->json(0 , $userapi->getError());
}else{
// 设置成功后 获取用户数据
$user = $userapi->one($userid);
// 输入json数据
$api->load('fun')->json(1 , $user);
}
会员登出
<?php
defined('ECMSAPI_MOD') or exit;
// 退出登陆
$api->load('user')->clearSession();
// 输出json数据
$api->load('fun')->json(1 , 'success');
已登陆会员信息查询
<?php
defined('ECMSAPI_MOD') or exit;
// 获取当前已登陆用户的信息
$user = $api->load('user')->getSession();
if(false === $user){
$api->load('fun')->json(0 , '请登陆');
}else{
$api->load('fun')->json(1 , $user);
}
本示例源码下载
直接下载附件,将解压后的文件夹上传至 /ecmsapi/_mod/ 目录