人的记忆力会随着岁月的流逝而衰退,写作可以弥补记忆的不足,将曾经的人生经历和感悟记录下来,也便于保存一份美好的回忆。那么我们该如何写一篇较为完美的范文呢?以下是我为大家搜集的优质范文,仅供参考,一起来看看吧
php实现微信公众号主动推送消息功能篇一
通过学习借鉴朋友的实现方法进行整理,实现了php版的.微信公共平台消息主动推送,分享给大家供大家参考,具体内容如下,更多消息请关注应届毕业生网。
此方法是通过模拟登录微信公共平台的方法来实现的。
代码如下:
| 1< 2< 3< 4< 5< 6< 7< 8< 9< 10< 11< 12< 13< 14< 15< 16< 17< 18< 19< 20< 21< 22< 23< 24< 25< 26< 27< 28< 29< 30< 31< 32< 33< 34< 35< 36< 37< 38< 39< 40< 41< 42< 43< 44< 45< 46< 47< 48< 49< 50< 51< 52 | //登录< private function login(){< $url = 'https:///cgi-bin/login?lang=zh_cn';< $this->send_data = array(< 'username' => $this->_account,< 'pwd' => md5($this->_password),< 'f' => 'json'< );< $this->referer = "https:///";< $this->getheader = 1;< $result = explode("\n",$this->curlpost($url));< foreach ($result as $key => $value) {< $value = trim($value);< if(preg_match('/"errcode": (.*)/i', $value,$match)){//获取token< switch ($match[1]) {< case -1:< die(json_encode(array('status'=>1,'errcode'=>$match[1],'msg'=>"系统错误")));< case -2:< die(json_encode(array('status'=>1,'errcode'=>$match[1],'msg'=>"帐号或密码错误")));< case -3:< die(urldecode(json_encode(array('status'=>1,'errcode'=>$match[1],'msg'=>urlencode("密码错误")))));< case -4:< die(json_encode(array('status'=>1,'errcode'=>$match[1],'msg'=>"不存在该帐户")));< case -5:< die(json_encode(array('status'=>1,'errcode'=>$match[1],'msg'=>"访问受限")));< case -6:< die(json_encode(array('status'=>1,'errcode'=>$match[1],'msg'=>"需要输入验证码")));< case -7:< die(json_encode(array('status'=>1,'errcode'=>$match[1],'msg'=>"此帐号已绑定私人微信号,不可用于公众平台登录")));< case -8:< die(json_encode(array('status'=>1,'errcode'=>$match[1],'msg'=>"邮箱已存在")));< case -32:< die(json_encode(array('status'=>1,'errcode'=>$match[1],'msg'=>"验证码输入错误")));< case -200:< die(json_encode(array('status'=>1,'errcode'=>$match[1],'msg'=>"因频繁提交虚假资料,该帐号被拒绝登录")));< case -94:< die(json_encode(array('status'=>1,'errcode'=>$match[1],'msg'=>"请使用邮箱登陆")));< case 10:< die(json_encode(array('status'=>1,'errcode'=>$match[1],'msg'=>"该公众会议号已经过期,无法再登录使用")));< case 0:< $this->userfakeid = $this->getuserfakeid();< break;< }< }< if(preg_match('/^set-cookie:[\s]+([^=]+)=([^;]+)/i', $value,$match)){//获取cookie< $this->cookie .=$match[1].'='.$match[2].'; ';< }< if(preg_match('/"errmsg"/i', $value,$match)){//获取token< $this->token = rtrim(substr($value,strrpos($value,'=')+1),'",');< }< }< } | 2>
| 1< 2< 3< 4< 5< 6< 7< 8< 9< 10< 11< 12< 13< 14 | //单发消息< private function send($fakeid,$content){< $url = 'https:///cgi-bin/singlesend?t=ajax-response&lang=zh_cn';< $this->send_data = array(< 'type' => 1,< 'content' => $content,< 'error' => 'false',< 'tofakeid' => $fakeid,< 'token' => $this->token,< 'ajax' => 1,< );< $this->referer = 'https:///cgi-bin/singlemsgpage?token='.$this->token.'&fromfakeid='.$fakeid.'&msgid=&source=&count=20&t=wxm-singlechat&lang=zh_cn';< return $this->curlpost($url);< } | 2>
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
//群发消息
public function sendmessage($content='',$userid='') {
if(is_array($userid) && !empty($userid)){
foreach($userid as $v){
$json = json_decode($this->send($v,$content));
if($json->ret!=0){
$erruser[] = $v;
}
}
}else{
foreach($this->userfakeid as $v){
$json = json_decode($this->send($v['fakeid'],$content));
if($json->ret!=0){
$erruser[] = $v['fakeid'];
}
}
}
//共发送用户数
$count = count($this->userfakeid);
//发送失败用户数
$errcount = count($erruser);
//发送成功用户数
$succecount = $count-$errcount;
$data = array(
'status'=>0,
'count'=>$count,
'succecount'=>$succecount,
'errcount'=>$errcount,
'erruser'=>$erruser
);
return json_encode($data);
}
|
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
//获取所有用户信息
public function getalluserinfo(){
foreach($this->userfakeid as $v){
$info[] = $this->getuserinfo($v['groupid'],$v['fakeid']);
}
return $info;
}
//获取用户信息
public function getuserinfo($groupid,$fakeid){
$url = "https:///cgi-bin/getcontactinfo?t=ajax-getcontactinfo&lang=zh_cn&fakeid={$fakeid}";
$this->getheader = 0;
$this->referer = 'https:///cgi-bin/contactmanagepage?token='.$this->token.'&t=wxm-friend&lang=zh_cn&pagesize='.$this->pagesize.'&pageidx=0&type=0&groupid='.$groupid;
$this->send_data = array(
'token'=>$this->token,
'ajax'=>1
);
$message_opt = $this->curlpost($url);
return $message_opt;
}
//获取所有用户fakeid
private function getuserfakeid(){
ini_set('max_execution_time',600);
$pagesize = 1000000;
$this->referer = "https:///cgi-bin/home?t=home/index&lang=zh_cn&token={$_session['token']}";
$url = "https:///cgi-bin/contactmanage?t=user/index&pagesize={$pagesize}&pageidx=0&type=0&groupid=0&token={$this->token}&lang=zh_cn";
$user = $this->vget($url);
$preg = "/\"id\":(\d+),\"name\"/";
preg_match_all($preg,$user,$b);
$i = 0;
foreach($b[1] as $v){
$url = 'https:///cgi-bin/contactmanage?t=user/index&pagesize='.$pagesize.'&pageidx=0&type=0&groupid='.$v.'&token='.$this->token.'&lang=zh_cn';
$user = $this->vget($url);
$preg = "/\"id\":(\d+),\"nick_name\"/";
preg_match_all($preg,$user,$a);
foreach($a[1] as $vv){
$arr[$i]['fakeid'] = $vv;
$arr[$i]['groupid'] = $v;
$i++;
}
}
return $arr;
}
|
希望本文所述对大家学习php程序设计有所帮助。
s("content_relate");【php实现微信公众号主动推送消息】相关文章:
1.微信新规能让更多公众号加入“洗稿”行列吗
2.php页面缓存实现方法
3.php如何实现快速排序
4.如何用php实现找回密码
5.php多线程的实现方法
6.php如何实现验证码
7.php实现验证码制作
8.php实现多线程的方法技巧
9.php实现同步远程mysql的方法

一键复制