用户注册,登录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 接口的更多相关文章
- day102:MoFang:后端完成对短信验证码的校验&基于celery完成异步短信发送&flask_jwt_extended&用户登录的API接口
目录 1.用户注册 1.后端完成对短信验证码的校验 2.基于celery实现短信异步发送 2.用户登录 1.jwt登录验证:flask_jwt_extended 2.服务端提供用户登录的API接口 1 ...
- php 登录注册api接口代码
/** *一览(www.yl1001.com) * PHP开发API接口 服务端 */ require 'conn.php'; //连接数据库的文件 header('Content-Type:text ...
- Web API接口 安全验证
在上篇随笔<Web API应用架构设计分析(1)>,我对Web API的各种应用架构进行了概括性的分析和设计,Web API 是一种应用接口框架,它能够构建HTTP服务以支撑更广泛的客户端 ...
- 免费安卓IOS测试API接口,后续会陆续增加接口
各位博友好!开发的安卓或者ios的朋友们,经常会遇到想测试但是没有公开的api接口进行进行测试.但自己又不会开发服务端或者没有服务器,这里我免费提供了一整套API接口.欢迎大家调用,目标是方便大家. ...
- 构建微服务-使用OAuth 2.0保护API接口
微服务操作模型 基于Spring Cloud和Netflix OSS 构建微服务-Part 1 基于Spring Cloud和Netflix OSS构建微服务,Part 2 在本文中,我们将使用OAu ...
- [转]使用nodejs-koa2-mysql-sequelize-jwt 实现项目api接口
本文转自:https://blog.csdn.net/yibowanbo/article/details/80521849 nodejs-koa2-mysql-sequelize-jwt技术栈:nod ...
- 设计一个高质量的API接口
参考网址:http://url.cn/5UaTeyv 前言 在设计接口时,有很多因素要考虑,如接口的业务定位,接口的安全性,接口的可扩展性.接口的稳定性.接口的跨域性.接口的协议规则.接口的路径规则. ...
- “小葵日记”API接口文档
"小葵日记"项目API接口文档 时间:2017/10/31 (1)用户登录[待完成] POST:127.0.0.1/index/user/login data 数据别称 数据名 数 ...
- 使用nodejs-koa2-mysql-sequelize-jwt 实现项目api接口
nodejs-koa2-mysql-sequelize-jwt 技术栈:nodejs, koa2, mysql, sequelize, jwt 项目数据层和操作层分明 使用koa2框架中间件,参数处理 ...
随机推荐
- Echarts图表学习
最近项目已经运行的比较稳定了,正巧看到ECcharts的图标很炫,遂做一个玩玩,以备后面做数据分析使用. 官网地址:http://echarts.baidu.com/index.html 大致了解了下 ...
- IP地址与数字地址相互转换
/// <summary> /// IP地址转换成数字 /// </summary> /// <param name="addr">IP地址&l ...
- pat乙级1045
从左到右扫描时记录扫描到当前下标为止的最大值,如果当前元素大于这个最大值,那么它就大于它左边的所有值.同理,从右到左扫描记录扫描到当前下标为止的最小值,如果当前元素小于这个最大小值,那么它就小于它右边 ...
- Python http
# import httplib # http_client = None # http_client = httplib.HTTPConnection('localhost', 8080, time ...
- java编程基础——二叉树的镜像
题目描述 操作给定的二叉树,将其变换为源二叉树的镜像. 题目代码 /** * @program: JavaCode * @description: 操作给定的二叉树,将其变换为源二叉树的镜像. * 二 ...
- eclipse中关闭java文件后再打开,找不到如何切换可视化编辑器
http://www.iteye.com/problems/64806 两种方式: 第一种正如楼上的老兄说的.在该java类中,鼠标右击,移动到openWith上 找到jigloo,找不到就在ot ...
- macbook pro开机键盘键盘和触摸板没反应问题
今天遇到开机键盘和触摸板没反应的问题,打电话给售后,他叫我插一个usb外置键盘,开机时按shift+alt+control+电源键开机,突然发现可以了,这bug我也是醉了
- react的redux无状态组件
Provider功能主要为以下两点: 在原应用组件上包裹一层,使原来整个应用成为Provider的子组件 接收Redux的store作为props,通过context对象传递给子孙组件上的connec ...
- C/C++程序基础 (七)继承和多态
多态 编译时多态:重载 运行时多态:虚函数.根据运行时的类别获取正确的虚指针,从而定位正确的虚函数. 虚函数 虚函数指针:指向虚函数表.多重继承则含有多个基类的虚函数指针. 虚函数表:函数指针集合.普 ...
- Windows 下编辑 hosts 文件
hosts 文件目录: C:\WINDOWS\system32\drivers\etc\hosts hosts是一个没有扩展名的系统文件,可以用记事本等工具打开,其作用就是将一些常用的网址域名与其对应 ...