美文网首页
微信小程序学习回顾-2.3-【零基础】

微信小程序学习回顾-2.3-【零基础】

作者: 初九简书 | 来源:发表于2020-03-07 23:08 被阅读0次

服务端接口开发

  • 工具准备(编码工具-sublime;运行环境-phpStudy;调试工具-postman;...)
  • 基础知识:网络请求、mysql、thinkphp
  • 各接口开发实操:注册登陆

接口文档

正式接口代码编写前,需要输出接口文档,以便对照和检查。

注册接口文档 登录接口文档
代码思路:
  • 首先判断参数是否齐全(其中face_url不用判断,直接在前端全局变量中用户授权用户信息中调用)
  • 校验密码是否一致(手机号长度和合法性校验,理论上要做的,但是在接口文档没写出来,所以暂时不做)
  • 校验手机密码是否已注册
  • 全部校验成功,则将输入信息增加到数据库中。增加成功,则提示注册成功,并返回需求数据;登录类似,校验增加一项密码和注册密码是否一致。

php基本语法:

$_POST['text']代表输入的数据value
$table=M(‘table’) 代表实例化数据表table,
特别注意:
$this->ajaxReturn()这个函数的意义是将括号内的数据返回到客户端,它和打印输出dump/var_dump不同,它只会执行一个,所以要特别注意其出现的逻辑,避免和前端JS中console.log作用混淆!

补充几个sublime中提高代码编写的方法:

  • 光标移动至行末尾---> End键
  • 光标在行中间,但是先直接换到下一行--> ctrl+enter
  • 光标向右移动由方向键改为enter键-->方法
  • 宏录制方法
  • 搞懂正则表达式就好弄了,直接在key bindings上操作自己想要的效果;

注册端口实现

<?php
namespace Home\Controller;

use Think\Controller;
class UserController extends BaseController {
    
    /**
     * 注册函数
     * @return [type] [description]
     */
    public function enroll()

    {

        //首先校验参数不足

        if (!$_POST['username']) {
            # code...
            $return_data=array();
            $return_data['error_code']=1;
            $return_data['msg']='参数不足:username';

            $this->ajaxReturn($return_data);
        }

        if (!$_POST['phonenum']) {
            # code...
            $return_data=array();
            $return_data['error_code']=1;
            $return_data['msg']='参数不足:phonenum';
            $this->ajaxReturn($return_data);
        }

        if (!$_POST['password']) {
            # code...
            $return_data=array();
            $return_data['error_code']=1;
            $return_data['msg']='参数不足:password';
            $this->ajaxReturn($return_data);

        }

        if (!$_POST['passwordagain']){

            $return_data=array();
            $return_data['error_code']=1;
            $return_data['msg']='参数不足:passwordagain';
            $this->ajaxReturn($return_data);

            # code...
        }

        if ($_POST['password']!=$_POST['passwordagain']) {
            $return_data=array();
            $return_data['error_code']=2;
            $return_data['msg']='两次密码输入不一致';
            $this->ajaxReturn($return_data);


            # code...
        }

        //校验手机号码是否已被注册,需要访问数据库,所以先实例化需要的数据表

        $user=M('user');

        

        //构造查询条件
        $where=array();
        $where['phonenum']=$_POST['phonenum'];
        $result_find=$user->where($where)->find();//find函数返回:满足查询条件的一行记录

        // $this->ajaxReturn($result_find);

        
        
        

        //判断查询是否成功(是否有返回数据),即确认是否有注册

        //有数据,则提示已被注册

        if ($result_find) {
            $return_data=array();
            $return_data['error_code']=3;
            $return_data['msg']='手机号已被注册';
            $this->ajaxReturn($return_data);
            


            # code...
        }
        // 没有数据,则执行注册,将输入数据增加到数据库中

        else{

            $Data=array();
            $Data['username']=$_POST['username'];
            $Data['phonenum']=$_POST['phonenum'];
            $Data['password']=md5($_POST['password']);
            $Data['face_url']=$_POST['face_url'];
            $result_add=$user->add($Data);//add函数返回:这一行记录的id,表示第几个成功添加

            // $this->ajaxReturn($result_add);
            // dump($result);

            //成功添加后,返回需求的数据

            if ($result_add) {
                $Data=array();
                $Data['error_code']=0;
                $Data['msg']='注册成功';
                $Data['Data']['username']=$_POST['username'];
                $Data['Data']['phonenum']=$_POST['phonenum'];
                $Data['Data']['face_url']=$_POST['face_url'];
                $Data['Data']['user_id']=$result_add;
                $this->ajaxReturn($Data);

                # code...
            }
            else{
                $return_data=array();
                $return_data['error_code']=4;
                $return_data['msg']='注册失败';
                $this->ajaxReturn($return_data);
            }
 
        }}
}


登陆端口实现

<?php
namespace Home\Controller;

use Think\Controller;
class UserController extends BaseController {
/**
     * 登录函数
     * @return [type] [description]
     */
    public function login(){

        // 校验参数

        if (!$_POST['phonenum']) {
            # code...
            $return_data=array();
            $return_data['error_code']=1;
            $return_data['msg']='参数不足:phonenum';
            $this->ajaxReturn($return_data);

        }

        if (!$_POST['password']) {
            # code...
            $return_data=array();
            $return_data['error_code']=1;
            $return_data['msg']='参数不足:password';
            $this->ajaxReturn($return_data);

        }

        //校验手机号是否有注册

          //实例化数据表
        $user=M('user');

        //构造查询条件

        $where=array();
        $where['phonenum']=$_POST['phonenum'];

        //查询数据
        $result_find=$user->where($where)->find();

        // 判断数据是否存在

        if (!$result_find) {
            //不存在,提示注册
            $return_data=array();
            $return_data['error_code']=2;
            $return_data['msg']='请先注册';
            $this->ajaxReturn($return_data);

            # code...
        }

        else{
            //如果存在,接着判断密码是否正确

            if ($result_find['password']!=md5($_POST['password'])) {
                //密码不一致,则提示密码错误
            $return_data=array();
            $return_data['error_code']=3;
            $return_data['msg']='密码错误';
            $this->ajaxReturn($return_data);
                # code...
            }

            else{

                //登录成功,返回数据
            $return_data=array();
            $return_data['error_code']=0;
            $return_data['msg']='登录成功';
            $return_data['Data']['username']=$result_find['username'];
            $return_data['Data']['phonenum']=$result_find['phonenum'];
            $return_data['Data']['face_url']=$result_find['face_url'];
            $return_data['Data']['user_id']=$result_find['id'];

            $this->ajaxReturn($return_data);
            }




        }  }





}

非注册登陆(树洞匿名)实现

想要实现:只在第一次授权时获取用户信息,用户不需要注册和登陆,直接接收随机分配的头像和名字。
思路:
除了数据表user外,需要再加一个数据表showUser。里面字段有:

  • id
  • user_id 等于数据表user中的id,是个外键;
  • showname 展示的名字
  • showface_url 展示的头像
    当授权成功时,调用bindgetsuerinfo,调用成功则执行回调函数wx.request(注册并返回id,用来在showUser数据表中匹配随机名字和头像)

本地服务器端口测试

使用postman发送请求,测试接口是否正常。这个测试动作是和代码编写同步进行的,一个功能完成就要测试一次,避免全部代码写完后出错难以排查原因。

部署云服务器

前期工具准备时,已完成了账号注册和实名验证以及创建应用。接下来:

  • 代码管理(上传代码包--压缩包点开即是thinkphp框架目录)
  • 新建数据库
  • postman测试更换云服务器域名后接口是否正常

代码版本控制

便于在调试中及时更新代码,保持线上线下代码一致。

  • 下载安装TortoiseSVN
  • 在phpstudy的安装目录WWW下右键点击SVN checkout,在url地址中填入服务器中SVN仓库地址,点击OK,填写云服务的账号、安全密码。
  • sublime打开新生成的代码文件夹,进行更改。
  • 在代码文件夹右键选择下载更新或上传发表

以上全部测试ok后,输出接口文档给到前端,注意其中本地服务器域名需要更换为云服务器域名。

特别提醒,代码打包上传时如果目录结构没有做好,就会出现这个情况!!

image.png

第一种打包才对


image.png

相关文章

网友评论

      本文标题:微信小程序学习回顾-2.3-【零基础】

      本文链接:https://www.haomeiwen.com/subject/dhfllhtx.html