用tp5编写API接口(账户登录/列表)--小程序

创建一个tp5框架,添加一个登录的方法,先验证账户和密码是否为空,不为空则验证是什么用户登录(学生/老师)

在小程序中调用登录的方法

public function stulogin(){
		$no = input('?no') ? input('no') : '';
		$pwd = input('?pwd') ? input('pwd') : '';
		if(empty($no) || empty($pwd)){
			return array('errcode'=>101,'errmsg'=>'账号或密码不能为空');
		}

生成一个随机的token,给它加密,根据获取的账号和密码把token添加到数据库中,成功便返回json串

        $token = md5(uniqid(md5(microtime(true)),true));// 生成随机的token
		$token = sha1($token);//加密
		$time_out = time() + 3600;//过期时间

		//查询学生
		$where = array('no'=>$no,'pwd'=>md5($pwd));
		$stu = Db::table('student')->where($where)->find();
		// $classid = $stu['classid'];
		if($stu){
			Db::name('student')->where($where)->update(array('token'=>$token,'time_out'=>$time_out));
			return array('token'=>$token,'indetify'=>'student','errmsg'=>'登录成功');
		}

		//查询老师
		$where = array('teacherid'=>$no,'pwd'=>md5($pwd));
		$tea = Db::table('teacher')->where($where)->find();

		if($tea){
			Db::name('teacher')->where($where)->update(array('token'=>$token,'time_out'=>'timer_out'));
			return array('token'=>$token,'indetify'=>'teacher');
		}

		return array('errcode'=>102,'errmsg'=>'账号或密码错误');
	}

实现列表页

首先创建一个前置操作方法,验证token是否存在,无效,过期,如果正常便执行列表方法,如果不正常便返回错误,

列表页需根据一个参数值来获取信息,在这里我定义的是班级编号classid

private $classid;//班级编号
	private $no;//学号
	private $name;//姓名

	//前置操作
	protected $beforeActionList = [
		'valid_token' => ['except'=>'login'],
	];

	//验证token
	protected function valid_token(){
		$token = request()->param('token');

		if(empty($token)){
			echo myjson_encode(array('errcode'=>201,'errmsg'=>'token不存在'));
			die;
		}

		$stu = Db::name('student')->where('token',$token)->find();

		if(empty($stu)){
			return myjson_encode(array('errcode'=>202,'errmsg'=>'token无效'));
		}

		if(time()>$stu['time_out']){
			//token过期
			echo myjson_encode(array('errcode'=>203,'errmsg'=>'token过期'));
			die;
		}

		$this->classid = $stu['classid'];
		$this->no = $stu['no'];
		$this->name = $stu['name'];
	}

列表页的方法:

public function tealist(){
    	$classid = $this->classid;
		if(empty($this->classid)){
			return array('errcode'=>201,'errmsg'=>'班级编号不能为空');
		}
		
		$model =Db::query("select teacherid,teachername,GROUP_CONCAT(course) as course from `tc` where classid='$classid' group by teacherid");

		if($model){
		    return array('data'=>$model,'errmsg'=>'成功');  
		}else{
			return array('errcode'=>202,'errmsg'=>'无此编号');
		}
	}

 

你可能感兴趣的:(用tp5编写API接口(账户登录/列表)--小程序)