memcache
博客专区 > Tony2015 的博客 > 博客详情
memcache
Tony2015 发表于2年前
memcache
  • 发表于 2年前
  • 阅读 47
  • 收藏 1
  • 点赞 0
  • 评论 0

新睿云服务器60天免费使用,快来体验!>>>   

<?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);
       }
}
?>

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 1
博文 26
码字总数 28618
×
Tony2015
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: