下载 简介 快速上手 更新日志 安装 扩展类 模块 配置 api.class.php EcmsApi.php 入口 控制器 EapiView.php EapiCache.php EapiCheck.php EapiUpload.php EapiToken.php EapiDb.php EapiFun.php EapiFile.php EapiTable.php EapiUser.php EapiExtendGzh.php EapiExtendBaijiahao.php EapiExtendFpay.php 【示例分享】帝国cms批量更新 自动保存远程图片到本地 【示例分享】万能API接口插件实现 微信公众号自动回复功能 【示例分享】新闻列表、新闻详情、新闻采集、新闻删除等接口 万能API接口插件在模板中的使用 【伪静态版】全网适配sitemap,无须生成,支持【百度/谷歌/必应/神马/360】 获取分类 【示例分享】通过接口实现会员的无刷新登陆与注册 【示例分享】帝国CMS 汉字转拼音接口 在帝国万能API接口插件中使用medoo数据库框架 关键词搜索

通过接口实现会员的无刷新登陆与注册

先上演示: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/ 目录
 

user.zip
user.zip (6.19 KB)