用户注册,登录API 接口

Posted 洞拐洞幺

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用户注册,登录API 接口相关的知识,希望对你有一定的参考价值。

Controer:

<?php
/**
 * @name UserController
 * @author pangee
 * @desc 用户控制器
 */
class UserController extends Yaf_Controller_Abstract {

	public function indexAction() {
		return $this->loginAction();
	}
	public function loginAction() {
		$submit = $this->getRequest()->getQuery( "submit", "0" );
		if( $submit!="1" ) {
			echo json_encode( array("errno"=>-1001, "errmsg"=>"请通过正确渠道提交") );
			return FALSE;
		}

		// 获取参数
		$uname = $this->getRequest()->getPost( "uname", false );
		$pwd = $this->getRequest()->getPost( "pwd", false );
		if( !$uname || !$pwd ) {
			echo json_encode( array("errno"=>-1002, "errmsg"=>"用户名与密码必须传递") );
			return FALSE;
		}

		// 调用Model,做登录验证
		$model = new UserModel();
		$uid = $model->login( trim($uname), trim($pwd) );
		if ( $uid ) {
			// 种Session
			session_start();
			$_SESSION[‘user_token‘] = md5( "salt".$_SERVER[‘REQUEST_TIME‘].$uid );
			$_SESSION[‘user_token_time‘] = $_SERVER[‘REQUEST_TIME‘];
			$_SESSION[‘user_id‘] = $uid;
			echo json_encode( array(
							"errno"=>0,
							"errmsg"=>"",
							"data"=>array("name"=>$uname)
						));
		} else {
			echo json_encode( array(
						"errno"=>$model->errno,
						"errmsg"=>$model->errmsg,
					));
		}
		return TRUE;
	}
	public function registerAction() {
		// 获取参数
		$uname = $this->getRequest()->getPost( "uname", false );
		$pwd = $this->getRequest()->getPost( "pwd", false );
		if( !$uname || !$pwd ) {
			echo json_encode( array("errno"=>-1002, "errmsg"=>"用户名与密码必须传递") );
			return FALSE;
		}

		// 调用Model,做登录验证
		$model = new UserModel();
		if ( $model->register( trim($uname), trim($pwd) ) ) {
			echo json_encode( array(
							"errno"=>0,
							"errmsg"=>"",
							"data"=>array("name"=>$uname)
						));
		} else {
			echo json_encode( array(
						"errno"=>$model->errno,
						"errmsg"=>$model->errmsg,
					));
		}
		return TRUE;
	}
}

  

 

Model:

<?php
/**
 * @name UserModel
 * @desc 用户操作Model类
 * @author pangee
 */
class UserModel {
	public $errno = 0;
	public $errmsg = "";
	private $_db;

    public function __construct() {
		$this->_db = new PDO("mysql:host=127.0.0.1;dbname=imooc;", "root", "");
    }   
    
	public function login( $uname, $pwd ) {
		$query = $this->_db->prepare("select `pwd`,`id` from `user` where `name`= ? ");
		$query->execute( array($uname) );
		$ret = $query->fetchAll();
		if ( !$ret || count($ret)!=1 ) {
			$this->errno = -1003;
			$this->errmsg = "用户查找失败";
			return false;
		}
		$userInfo = $ret[0];
		if( $this->_password_generate($pwd) != $userInfo[‘pwd‘] ) {
			$this->errno = -1004;
			$this->errmsg = "密码错误";
			return false;
		}
		return intval($userInfo[1]);
	}

	public function register( $uname, $pwd ){
		$query = $this->_db->prepare("select count(*) as c from `user` where `name`= ? ");
		$query->execute( array($uname) );
		$count = $query->fetchAll();
		if( $count[0][‘c‘]!=0 ) {
			$this->errno = -1005;
			$this->errmsg = "用户名已存在";
			return false;
		}

		if( strlen($pwd)<8 ) {
			$this->errno = -1006;
			$this->errmsg = "密码太短,请设置至少8位的密码";
			return false;
		} else {
			$password = $this->_password_generate( $pwd );
		}

		$query = $this->_db->prepare("insert into `user` (`id`, `name`,`pwd`,`reg_time`) VALUES ( null, ?, ?, ? )");
		$ret = $query->execute( array($uname, $password, date("Y-m-d H:i:s")) );
		if( !$ret ) {
			$this->errno = -1006;
			$this->errmsg = "注册失败,写入数据失败";
			return false;
		}
		return true;
	}

	private function _password_generate( $password ){
		$pwd = md5( "salt-xxxxxxxxx-".$password );
		return $pwd;
	}

}

  

以上是关于用户注册,登录API 接口的主要内容,如果未能解决你的问题,请参考以下文章

用户注册,登录API 接口

PHP实现的注册,登录及查询用户资料功能API接口示例

教程4 - 验证和权限

Api接口登录的鉴权方案

Api接口登录的鉴权方案

postman接口测试----2登录