文档章节

memcache

Tony2015
 Tony2015
发布于 2015/12/21 16:47
字数 1685
阅读 48
收藏 1
点赞 0
评论 0

<?php

import('@.ComUtils.Utils');
import('@.ComUtils.AuthCheck');
import('@.ComUtils.ErrDef');
import('@.ComUtils.Requesturl');
import('@.APIBase');
import('@.ComUtils.JifenSys');

class APIAuthAction extends BaseAction
{
    
    public function __construct()
    {
        new APISecurityCheckAction(false);
    }

    public function regSendCode(){
        $ret = ErrDef::$Err_None;
        $postcontent = file_get_contents("php://input");
        $res = json_decode($postcontent, true);
        $mobile=$res['mobile'];
        $account=C('ACCOUNT');
        $pwd=C('PWD');
        $product=C('PRODUCT');
        $code=substr(microtime(true)*10000,-6);
        $time=time();

        //1.2 判断手机格式不正确
        $pattern = "/^(13[0-9]|14[0-9]|15[0-9]|17[0-9]|18[0-9])\d{8}$/"; //手机号码简单验证
        if(strlen($mobile)!= 11 || !preg_match($pattern, $mobile)){
            $message = "手机号码格式不正确";
            $state = 3;
        }else{
            $message= "手机验证码:".$code."。工作人员不会向您索要,请勿向他人泄露 ";
            $message=urlencode(mb_convert_encoding($message, 'GB2312', 'UTF-8'));
            $memcache = new Memcache();
            $link = $memcache -> connect(C("MEMCACHE_HOST"), C("MEMCACHE_PORT"));
            if(!$link){
                $message="缓存服务器连接失败,请重试!";
                $state=2;
            }else{
                $memcache->set("{$mobile}_code",$code);
                $memcache->set("{$mobile}_time",$time);
                $url="http://dx.10659com.com:83/ApiService.asmx/Send?account={$account}&pwd={$pwd}&product={$product}&mobile={$mobile}&message=".$message;
            
                $res=file_get_contents($url);
                $p = xml_parser_create();
                xml_parse_into_struct($p, $res, $vals, $index);
                xml_parser_free($p);
                $arr=explode(',',$vals[0]['value']);
                $state= $arr[0];
                if($state==200){
                    $message="发送成功";
                    $state=1;
                }else{
                    $message="发送失败";
                    $state=0;
                }
            }
        }
        $response = Array('RetCode'=>$ret,'message'=>$message,'state'=>$state);
        echo json_encode($response);
    }

    public function resetPwd1Android(){ // 验证手机号码,并发送验证码
        $ret = ErrDef::$Err_None;
        $postcontent = file_get_contents("php://input");
        $res = json_decode($postcontent, true);
        $mobile=$res['mobile'];
        $account=C('ACCOUNT');
        $pwd=C('PWD');
        $product=C('PRODUCT');
        $code=substr(microtime(true)*10000,-6);
        $time=time();

        

        $id=M('m_member')->where("username='{$mobile}' ")->getField('id');
        if($id){//用户id和手机号正确
            $message= "手机验证码:".$code."。工作人员不会向您索要,请勿向他人泄露 ";
            $message=urlencode(mb_convert_encoding($message, 'GB2312', 'UTF-8'));
            $memcache = new Memcache();
            $link = $memcache -> connect(C("MEMCACHE_HOST"), C("MEMCACHE_PORT"));
            if(!$link){
                $message="缓存服务器连接失败,请重试!";
                $state=2;
            }else{
                $memcache->set("{$mobile}_code",$code);
                $memcache->set("{$mobile}_time",$time);
                $url="http://dx.10659com.com:83/ApiService.asmx/Send?account={$account}&pwd={$pwd}&product={$product}&mobile={$mobile}&message=".$message;
            
                $res=file_get_contents($url);
                $p = xml_parser_create();
                xml_parse_into_struct($p, $res, $vals, $index);
                xml_parser_free($p);
                $arr=explode(',',$vals[0]['value']);
                $state= $arr[0];
                if($state==200){
                    $message="发送成功";
                    $state=1;
                }else{
                    $message="发送失败";
                    $state=0;
                }
            }
        }else{
            $ret = ErrDef::$Err_NotExistUsername;//用户不存在
            $message="用户不存在";
            $state=-1;
        }
        $response = Array('RetCode'=>$ret,'message'=>$message,'state'=>$state);
        echo json_encode($response);
    }
    
    public function resetPwd2Android(){//验证手机验证码,执行更改密码
        $ret = ErrDef::$Err_None;
        $postcontent = file_get_contents("php://input");
        $res = json_decode($postcontent, true);
        
        $memcache = new Memcache();
        $link = $memcache->connect(C("MEMCACHE_HOST"), C("MEMCACHE_PORT"));
        if (!$link) {
            $message = "缓存服务器连接失败,请重试!";
            $state = 3;
            $response = Array('RetCode' => $ret, 'message' => $message, 'state' => $state);
            echo json_encode($response);
            exit;
        }
        
        if (!empty($res['code']) && !empty($res['mobile']))
        {//如果提交的有验证码
            $code = $memcache->get("{$res['mobile']}_code");
            $time = $memcache->get("{$res['mobile']}_time");
            if ($res['code']==$code){//验证码正确
                $dif_time = time()- $time;
                if ($dif_time <= 600){
                    $message="验证码正确!";
                    $state=1;    
                }else{//过期时间10分钟
                    $message="验证码已过期!";
                    $state=2;    
                }
            }else{//验证码错误
                $message="验证码错误!";
                $state=0;    
            }      
        }else{
            $message="请提交验证码!";
            $state=-1;
        }
    
        
        $response = Array('RetCode'=>$ret,'message'=>$message,'state'=>$state);
        echo json_encode($response);
        
    }
    public function resetPwd1(){ // 验证手机号码,并发送验证码
        $ret = ErrDef::$Err_None;
        $postcontent = file_get_contents("php://input");
        $res = json_decode($postcontent, true);
        $mobile=$res['mobile'];
        $account=C('ACCOUNT');
        $pwd=C('PWD');
        $product=C('PRODUCT');
        $code=substr(microtime(true)*10000,-6);
        $time=time();

        

        $id=M('m_member')->where("username='{$mobile}' ")->getField('id');
        if($id){//用户id和手机号正确
            $message= "手机验证码:".$code."。工作人员不会向您索要,请勿向他人泄露 ]";
            $message=urlencode(mb_convert_encoding($message, 'GB2312', 'UTF-8'));
            $_SESSION['mobile_code']=$code;
            $_SESSION['mobile_time']=$time;
            $url="http://dx.10659com.com:83/ApiService.asmx/Send?account={$account}&pwd={$pwd}&product={$product}&mobile={$mobile}&message=".$message;
            
            $res=file_get_contents($url);
            $p = xml_parser_create();
            xml_parse_into_struct($p, $res, $vals, $index);
            xml_parser_free($p);
            $arr=explode(',',$vals[0]['value']);
            $state= $arr[0];
            if($state==200){
                $message="发送成功";
                $state=1;
            }else{
                $message="发送失败";
                $state=0;
            }
        }else{
            $ret = ErrDef::$Err_NotExistUsername;//用户不存在
            $message="用户不存在";
            $state=-1;
        }
        $response = Array('RetCode'=>$ret,'message'=>$message,'state'=>$state);
        echo json_encode($response);
    }
    public function resetPwd2(){//验证手机验证码,执行更改密码
        $ret = ErrDef::$Err_None;
        $postcontent = file_get_contents("php://input");
        $res = json_decode($postcontent, true);
        
        if (!empty($res['code']))
        {//如果提交的有验证码
            if ($res['code']==$_SESSION['mobile_code']){//验证码正确
                $dif_time = time()- $_SESSION['mobile_time'];
                if ($dif_time <= 600){
                    $message="验证码正确!";
                    $state=1;    
                }else{//过期时间10分钟
                    $message="验证码已过期!";
                    $state=2;    
                }
            }else{//验证码错误
                $message="验证码错误!";
                $state=0;    
            }      
        }else{
            $message="请提交验证码!";
            $state=-1;
        }
    
        
        $response = Array('RetCode'=>$ret,'message'=>$message,'state'=>$state);
        echo json_encode($response);
        
    }
    public function resetPwd3(){//验证码正确,执行更改密码
        $ret = ErrDef::$Err_None;
        $postcontent = file_get_contents("php://input");
        $res = json_decode($postcontent, true);
        $username=trim($res['username']);
        $password=trim($res['pwd']);
        $model=M('m_member');
        if ($password==$res['pwd2'])
        {//如果提交的密码和重复密码一致
            $data['password']=md5($password);
            $data["usertoken"]=sha1($username.$password.AuthCheck::$_SharedSecret);
            $bool = $model->where("username = '{$username}'")->save($data);
            if($bool){
                $message="更改密码成功!";
                $state=1;
            }else{
                $message="密码未更新或修改失败!";
                $state=2;
            }
        }else{
            $message="两次密码输入不一致!";
            $state=0;
        }
        $response = Array('RetCode'=>$ret,'message'=>$message,'state'=>$state);
        echo json_encode($response);
        
        
        
    }
    public function Login()
    {
            
        $ret = ErrDef::$Err_None;
        $postcontent = file_get_contents("php://input");

           $ReqObj = json_decode($postcontent);
           $username=$ReqObj->username;
        $password=$ReqObj->password;
        
           if(($username<>"") and ($password<>""))
        {
            $use=new Model("m_member");
            $d_use=$use->where("username='".$username."'")->find();
        
            if(!empty($d_use))
            {
                //LOG::write($d_use["password"]." == ".$password);
                if($d_use["password"]==($password))
                {
                    $log=new Model("m_loginlog");
                    $data["username"]=$username;
                    $data["logintime"]=date("Y-m-d H:i:s");
                    $data["loginip"]=Utils::get_client_ip();
                    
                    $devtype = Utils::GetMobileDeviceType();
                    //ios
                    if ($devtype == 1)
                        $data["devtype"] = 0;
                    //android
                    if ($devtype == 2)
                        $data["devtype"] = 2;
                    //winphone
                    if ($devtype == 3)
                        $data["devtype"] = 3;
                    //$data["loginip"]=$this->get_client_ip();
                    $log->data($data)->add();
                    $response = Array('RetCode'=>$ret,'user_id'=>$d_use["id"],'user_token'=>$d_use["usertoken"]);
                       echo json_encode($response);
                       exit;    
                    
                }
                else
                {
                      $ret = ErrDef::$Err_MismatchPassword;
                }
            }
            else
            {
                $ret = ErrDef::$Err_NotExistUsername;
            }
        }
        else
        {
            $ret = ErrDef::$Err_AuthEmpty;
        }
        
           $response = Array('RetCode'=>$ret);
           echo json_encode($response);        

       }
           
     public function UpdatePassword()
       {
           
           $ret = ErrDef::$Err_None;
           $postcontent = file_get_contents("php://input");

           $ReqObj = json_decode($postcontent);
        $password=$ReqObj->password;
        $password2=$ReqObj->password2;
         $uid =AuthCheck::GetUserID();
           if($uid)
        {
            $use=new Model("m_member");
            $d_use=$use->where("id ={$uid}")->find();
        
            if(!empty($d_use))
            {
                //LOG::write($d_use["password"]." == ".$password);
                if($d_use["password"]==($password))
                {
                     $use->id=$uid;
                     $use->password=$password2;
                     $use->save();
                    //where("id={$uid}")->setInc("password",$password2);
                    
                    $response = Array('RetCode'=>$ret,'user_id'=>$d_use["id"],'user_token'=>$d_use["usertoken"]);
                       echo json_encode($response);
                       exit;    
                    
                }
                else
                {
                      $ret = ErrDef::$Err_MismatchPassword;
                }
            }
            else
            {
                $ret = ErrDef::$Err_NotExistUsername;
            }
        }
        else
        {
            $ret = ErrDef::$Err_AuthEmpty;
        }
        
           $response = Array('RetCode'=>$ret);
           echo json_encode($response);        

       }
      
       public function ThirdPartyLogin()
       {
        /*$ret = ErrDef::$Err_None;
           $postcontent = file_get_contents("php://input");

           $user_info = json_decode($postcontent, true);
           if (!isset($user_info["id"]) || !isset($user_info["type"]))
           {
               $response = Array('RetCode'=>ErrDef::$Err_AuthEmpty);
               echo json_encode($response);
               exit();
           }
           
           $firsttime = false;
        $thirdpartyid = $user_info["id"];
        $member_rec = M("thirdparty_member")->where("thirdpartyid='%s' and type='%s'", $thirdpartyid, $user_info["type"])->find();
        if (!isset($member_rec))
        {
            $firsttime = true;
        }
        
           $uid = Utils::GetThirdPartyUser($user_info);
           $user_rec = M("m_member")->where("id=%d", $uid)->find();
           
           
           
        $log=new Model("m_loginlog");
        $data["username"]=$user_rec["username"];
        $data["logintime"]=date("Y-m-d H:i:s");
        $data["loginip"]=Utils::get_client_ip();
        
        $devtype = Utils::GetMobileDeviceType();
        //ios
        if ($devtype == 1)
            $data["devtype"] = 0;
        //android
        if ($devtype == 2)
            $data["devtype"] = 2;
        //winphone
        if ($devtype == 3)
            $data["devtype"] = 3;
        //$data["loginip"]=$this->get_client_ip();
        $log->data($data)->add();
           
           //if (!$firsttime)
           //{
               $response = Array('RetCode'=>$ret,'user_id'=>$user_rec["id"],'user_token'=>$user_rec["usertoken"]);
           //}
           //else
           //{
           //    $response = Array('RetCode'=>$ret,'user_id'=>$user_rec["id"],'user_token'=>$user_rec["usertoken"],'tip'=>'恭喜您成为趣搭幸运用户,您已获得新用户双12商城超值大礼包,请登录查看我的优惠券/礼品卡!');
           //}*/
              $ret = ErrDef::$Err_fuck_reg;
              $response = Array('RetCode'=>$ret);
             echo json_encode($response);
       }
      
       public function Logout()
       {
           echo "logout";
       }
      
       public function Reg()
       {
           $ret = ErrDef::$Err_None;
           $postcontent = file_get_contents("php://input");
        $ReqObj = json_decode($postcontent);
           $username=$ReqObj->username;
        $password=$ReqObj->password;
        $invitecode=$ReqObj->invitecode;
        $deviceid = $ReqObj->deviceUDID;
        
        if(empty($invitecode))
        {
            $response = Array('RetCode'=>57);
               echo json_encode($response);
               exit;
        }
        $mem=new Model("m_member");
        $dmem=$mem->where("referralcode='".$invitecode."'")->find();
        if(empty($dmem["id"]))
        {
            $response = Array('RetCode'=>58);
               echo json_encode($response);
               exit;
        }

        $returncode = Utils::RegUser($username, $password, null, $invitecode, $userid, $token,$deviceid);
        if ($returncode != ErrDef::$Err_None)
        {
            $response = Array('RetCode'=>$returncode);
               echo json_encode($response);
        }
        else
        {
            $userid = sprintf('%.0f', $userid);
            
            if (AuthCheck::GetDevType() == 2)
                $response = Array('RetCode'=>$ret,'user_id'=>$userid,'user_token'=>$token,'tip'=>'感谢注册!');//
               else
                $response = Array('RetCode'=>$ret,'user_id'=>$userid,'user_token'=>$token);//,'tip'=>'恭喜您成为趣搭幸运用户,您已获得新用户双12商城超值大礼包,请登录查看我的优惠券/礼品卡!'
               echo json_encode($response);
        }
       }
      
       //返回Err_None表示可以注册
       public function CheckUsername()
       {
           $ret = ErrDef::$Err_None;
           $postcontent = file_get_contents("php://input");
        
        $ReqObj = json_decode($postcontent);
           $username=$ReqObj->username;
 
           if($username<>"")
           {
               $use=new Model("m_member");
            $d_use=$use->where("username='".$username."'")->find();
            if(!empty($d_use))
            {
                $ret = ErrDef::$Err_HasRegistered;
            }
            else
            {
                $ret = ErrDef::$Err_None;
            }    
           }
           else
           {
               $ret = ErrDef::$Err_AuthEmpty;
           }
           $response = Array('RetCode'=>$ret);
           echo json_encode($response);
       }
}
?>

© 著作权归作者所有

共有 人打赏支持
Tony2015
粉丝 1
博文 50
码字总数 28618
作品 0
杭州
程序员

暂无文章

实现异步有哪些方法

有哪些方法可以实现异步呢? 方式一:java 线程池 示例: @Test public final void test_ThreadPool() throws InterruptedException { ScheduledThreadPoolExecutor scheduledThre......

黄威
29分钟前
0
0
linux服务器修改mtu值优化cpu

一、jumbo frames 相关 1、什么是jumbo frames Jumbo frames 是指比标准Ethernet Frames长的frame,即比1518/1522 bit大的frames,Jumbo frame的大小是每个设备厂商规定的,不属于IEEE标准;...

六库科技
今天
0
0
牛客网刷题

1. 二维数组中的查找(难度:易) 题目描述 在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入...

大不了敲一辈子代码
今天
0
0
linux系统的任务计划、服务管理

linux任务计划cron 在linux下,有时候要在我们不在的时候执行一项命令,或启动一个脚本,可以使用任务计划cron功能。 任务计划要用crontab命令完成 选项: -u 指定某个用户,不加-u表示当前用...

黄昏残影
昨天
0
0
设计模式:单例模式

单例模式的定义是确保某个类在任何情况下都只有一个实例,并且需要提供一个全局的访问点供调用者访问该实例的一种模式。 实现以上模式基于以下必须遵守的两点: 1.构造方法私有化 2.提供一个...

人觉非常君
昨天
0
0
《Linux Perf Master》Edition 0.4 发布

在线阅读:https://riboseyim.gitbook.io/perf 在线阅读:https://www.gitbook.com/book/riboseyim/linux-perf-master/details 百度网盘【pdf、mobi、ePub】:https://pan.baidu.com/s/1C20T......

RiboseYim
昨天
1
0
conda 换源

https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/ conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/conda config --add channels https://mir......

阿豪boy
昨天
1
0
Confluence 6 安装补丁类文件

Atlassian 支持或者 Atlassian 缺陷修复小组可能针对有一些关键问题会提供补丁来解决这些问题,但是这些问题还没有放到下一个更新版本中。这些问题将会使用 Class 类文件同时在官方 Jira bug...

honeymose
昨天
0
0
非常实用的IDEA插件之总结

1、Alibaba Java Coding Guidelines 经过247天的持续研发,阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的《阿里巴巴Java开发规约》扫描插件!该插件由阿里巴巴P3C项目组研发。P3C...

Gibbons
昨天
1
0
Tomcat介绍,安装jdk,安装tomcat,配置Tomcat监听80端口

Tomcat介绍 Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。 java程序写的网站用tomcat+jdk来运行...

TaoXu
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部