Example #1
0
 public function sync()
 {
     $wx_info = $this->WX->getUserInfo($this->user_info['openid']);
     $data = array('user_id' => $this->user_info['user_id'], 'user_name' => remove_emoji($wx_info['nickname']), 'user_avatar' => $wx_info['headimgurl'], 'update_time' => NOW_TIME);
     M('User')->save($data);
     $this->redirect('User/index');
 }
Example #2
0
 protected function _init()
 {
     //cookie('user_id', null);
     $user_id = cookie('user_id');
     $user_id = 1;
     if ($user_id) {
         cookie('user_id', $user_id);
         $user_info = M('User')->find($user_id);
         if (!$user_info) {
             cookie('user_id', null);
             $this->redirect(__SELF__);
         }
         $user_info['area'] = json_decode($user_info['area'], true);
     } else {
         if (empty($_GET['code'])) {
             $callback = C('WEB_SITE_URL') . __SELF__;
             $url = $this->WX->getOauthRedirect($callback, '123456', 'snsapi_userinfo');
             redirect($url);
         }
         $access_data = $this->WX->getOauthAccessToken();
         $wx_info = $this->WX->getOauthUserinfo($access_data['access_token'], $access_data['openid']);
         if (empty($wx_info['openid'])) {
             $this->redirect(__SELF__);
         }
         $user_info = M('User')->where(array('openid' => $wx_info['openid']))->find();
         if (!$user_info) {
             $wx_info['nickname'] = remove_emoji($wx_info['nickname']);
             $user_info = array('openid' => $wx_info['openid'], 'user_name' => $wx_info['nickname'], 'user_avatar' => $wx_info['headimgurl'], 'sex' => $wx_info['sex'], 'create_time' => NOW_TIME, 'update_time' => NOW_TIME, 'status' => 1);
             $user_info['user_id'] = M('User')->add($user_info);
         }
         cookie('user_id', $user_info['user_id']);
     }
     $this->user_info = $user_info;
     $this->assign('user_info', $user_info);
     // 微信JSJDK
     // echo '<pre>';
     // print_r($this->WX->getJsSign('http://wwb.sypole.com' . __SELF__)); exit('</pre>');
     $this->assign('wx_config', $this->WX->getJsSign(C('WEB_SITE_URL') . __SELF__));
 }
Example #3
0
function cleanName($str)
{
    $str = utf8_bad_strip_improved($str);
    $str = strtolower($str);
    $str = str_replace("\n", ' ', $str);
    $str = remove_emoji($str);
    $str = str_replace(";", ' ', $str);
    //remove anything that is not letter, digit or slash
    $str = preg_replace('/[^a-z\\d\\/]+/i', '', $str);
    return $str;
}
Example #4
0
 /**
  * 微信消息接口入口
  * 所有发送到微信的消息都会推送到该操作
  * 所以,微信公众平台后台填写的api地址则为该操作的访问地址
  * 在mp.weixin.qq.com 开发者中心配置的 URL(服务器地址)  http://域名/index.php/home/weixin/index/id/member_public表的id.html
  */
 public function index()
 {
     $this->WX->valid();
     $type = $this->WX->getRev()->getRevType();
     if (C('DEVELOP_MODE')) {
         addWeixinLog($GLOBALS['HTTP_RAW_POST_DATA']);
     }
     //与微信交互的中控服务器逻辑可以自己定义,这里实现一个通用的
     switch ($type) {
         //事件
         case TPWechat::MSGTYPE_EVENT:
             //先处理事件型消息
             $event = $this->WX->getRevEvent();
             switch ($event['event']) {
                 //关注l
                 case TPWechat::EVENT_SUBSCRIBE:
                     //二维码关注
                     if (isset($event['eventkey']) && isset($event['ticket'])) {
                     } else {
                         //普通关注
                     }
                     $openid = $this->WX->getRevFrom();
                     $User = M('User');
                     $user_info = $User->where(array('openid' => $openid))->find();
                     if ($user_info) {
                         $map = array('openid' => $this->WX->getRevFrom());
                         $User->where($map)->setField('is_subscribe', 1);
                     } else {
                         $wx_info = $this->WX->getUserInfo($this->WX->getRevFrom());
                         $wx_info['nickname'] = remove_emoji($wx_info['nickname']);
                         $data = array('openid' => $openid, 'user_name' => $wx_info['nickname'], 'user_avatar' => $wx_info['headimgurl'], 'is_subscribe' => 1, 'status' => 1, 'create_time' => NOW_TIME, 'update_time' => NOW_TIME);
                         $User->add($data);
                     }
                     $this->WX->text(html_entity_decode(C('SUBSCRIBE_MSG')))->reply();
                     break;
                     //扫描二维码
                 //扫描二维码
                 case TPWechat::EVENT_SCAN:
                     break;
                     //地理位置
                 //地理位置
                 case TPWechat::EVENT_LOCATION:
                     break;
                     //自定义菜单 - 点击菜单拉取消息时的事件推送
                 //自定义菜单 - 点击菜单拉取消息时的事件推送
                 case TPWechat::EVENT_MENU_CLICK:
                     switch ($event['key']) {
                         case 'MENU_KEY_NEWS':
                             break;
                         default:
                             # code...
                             break;
                     }
                     break;
                     //自定义菜单 - 点击菜单跳转链接时的事件推送
                 //自定义菜单 - 点击菜单跳转链接时的事件推送
                 case TPWechat::EVENT_MENU_VIEW:
                     $this->WX->text('//自定义菜单 - 点击菜单跳转链接时的事件推送')->reply();
                     break;
                     //自定义菜单 - 扫码推事件的事件推送
                 //自定义菜单 - 扫码推事件的事件推送
                 case TPWechat::EVENT_MENU_SCAN_PUSH:
                     break;
                     //自定义菜单 - 扫码推事件且弹出“消息接收中”提示框的事件推送
                 //自定义菜单 - 扫码推事件且弹出“消息接收中”提示框的事件推送
                 case TPWechat::EVENT_MENU_SCAN_WAITMSG:
                     break;
                     //自定义菜单 - 弹出系统拍照发图的事件推送
                 //自定义菜单 - 弹出系统拍照发图的事件推送
                 case TPWechat::EVENT_MENU_PIC_SYS:
                     break;
                     //自定义菜单 - 弹出拍照或者相册发图的事件推送
                 //自定义菜单 - 弹出拍照或者相册发图的事件推送
                 case TPWechat::EVENT_MENU_PIC_PHOTO:
                     break;
                     //自定义菜单 - 弹出微信相册发图器的事件推送
                 //自定义菜单 - 弹出微信相册发图器的事件推送
                 case TPWechat::EVENT_MENU_PIC_WEIXIN:
                     break;
                     //自定义菜单 - 弹出地理位置选择器的事件推送
                 //自定义菜单 - 弹出地理位置选择器的事件推送
                 case TPWechat::EVENT_MENU_LOCATION:
                     break;
                     //取消关注
                 //取消关注
                 case TPWechat::EVENT_UNSUBSCRIBE:
                     $openid = $this->WX->getRevFrom();
                     $User = M('User');
                     $user_info = $User->where(array('openid' => $openid))->find();
                     if ($user_info) {
                         $map = array('openid' => $this->WX->getRevFrom());
                         $User->where($map)->setField('is_subscribe', 0);
                     } else {
                         $wx_info = $this->WX->getUserInfo($this->WX->getRevFrom());
                         $data = array('openid' => $openid, 'user_name' => $wx_info['nickname'], 'user_avatar' => $wx_info['headimgurl'], 'is_subscribe' => 0, 'status' => 1, 'create_time' => NOW_TIME, 'update_time' => NOW_TIME);
                         $User->add($data);
                     }
                     break;
                     //群发接口完成后推送的结果
                 //群发接口完成后推送的结果
                 case TPWechat::EVENT_SEND_MASS:
                     break;
                     //模板消息完成后推送的结果
                 //模板消息完成后推送的结果
                 case TPWechat::EVENT_SEND_TEMPLATE:
                     break;
                 default:
                     break;
             }
             break;
             //文本
         //文本
         case TPWechat::MSGTYPE_TEXT:
             $keyword = trim($this->WX->getRevContent());
             switch ($keyword) {
                 case '1':
                     $this->WX->text(html_entity_decode(C('SUBSCRIBE_MSG')))->reply();
                     break;
                 case '2':
                     $data = array(array('Title' => '最新新闻', 'Description' => '测试description1', 'PicUrl' => 'http://shop.zlsgx.com/images/201508/goods_img/3_G_1440030087739.jpg', 'Url' => ''), array('Title' => '最新新闻', 'Description' => '测试description2', 'PicUrl' => 'http://shop.zlsgx.com/images/201508/goods_img/5_G_1440028482068.jpg', 'Url' => ''), array('Title' => '最新新闻', 'Description' => '测试description3', 'PicUrl' => 'http://shop.zlsgx.com/images/201508/goods_img/5_G_1440028482068.jpg', 'Url' => ''), array('Title' => '最新新闻', 'Description' => '测试description4', 'PicUrl' => 'http://shop.zlsgx.com/images/201508/goods_img/5_G_1440028482068.jpg', 'Url' => ''));
                     $this->WX->news($data)->reply();
                     break;
                 default:
                     //$this->WX->text("默认信息...")->reply();
                     //接入客服
                     $this->WX->transfer_customer_service()->reply();
                     break;
             }
             break;
             //图像
         //图像
         case TPWechat::MSGTYPE_IMAGE:
             break;
             //语音
         //语音
         case TPWechat::MSGTYPE_VOICE:
             break;
             //视频
         //视频
         case TPWechat::MSGTYPE_VIDEO:
             break;
             //位置
         //位置
         case TPWechat::MSGTYPE_LOCATION:
             break;
             //链接
         //链接
         case TPWechat::MSGTYPE_LINK:
             break;
         default:
             break;
     }
 }