微信公众平台开发关注/取消关注事件例子

 更新时间:2016年11月25日 17:23  点击:1976
用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL。方便开发者给用户下发欢迎消息或者做帐号的解绑

下面是一个微信公众平台关注和取消关注的实例:

 代码如下 复制代码

define("TOKEN", "w3note");//定义识别码
$wechatObj = new wechatCallbackapiTest();//实例化wechatCallbackapiTest类

if(!isset($_GET["echostr"])){
     $wechatObj->responseMsg();
}else{
 $wechatObj->valid();
}
class wechatCallbackapiTest
{
 public function valid()
    {
        $echoStr = $_GET["echostr"];
      
        if($this->checkSignature()){
         echo $echoStr;
         exit;
        }
    }
    public function responseMsg()//执行接收器方法
    {

  $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

  if (!empty($postStr)){
              
               $postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
      $RX_TYPE = trim($postObj->MsgType);
      switch($RX_TYPE){
       case "event":
       $result = $this->receiveEvent($postObj);
       breadk;
      }
      echo $result;
  }else{
   echo "";
   exit;
  }
 }
  private function receiveEvent($object){
   $content = "";
   switch ($postObj->Event){
    case "subscribe":
    $content = "欢迎关注网志博客";//这里是向关注者发送的提示信息
    break;
    case "unsubscribe":
    $content = "";
    break;
   }
   $result = $this->transmitText($object,$content);
   return $result;
 
    }
 private function transmitText($object,$content){
   $textTpl = "<xml>
       <ToUserName><![CDATA[%s]]></ToUserName>
       <FromUserName><![CDATA[%s]]></FromUserName>
       <CreateTime>%s</CreateTime>
       <MsgType><![CDATA[text]]></MsgType>
       <Content><![CDATA[%s]]></Content>
       <FuncFlag>0</FuncFlag>
       </xml>";
    $result = sprintf($textTpl, $object->FromUserName, $object->$ToUserName, time(), $content);
    return $result;
 
  }
 private function checkSignature()
 {
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];
        
  $token = TOKEN;
  $tmpArr = array($token, $timestamp, $nonce);
  sort($tmpArr, SORT_STRING);
  $tmpStr = implode( $tmpArr );
  $tmpStr = sha1( $tmpStr );
 
  if( $tmpStr == $signature ){
   return true;
  }else{
   return false;
  }
 }
}

代码相关参数说明:

参数 描述
ToUserName 开发者微信号
FromUserName  发送方帐号(一个OpenID)
CreateTime  消息创建时间 (整型)
MsgType  消息类型,event
Event  事件类型,subscribe(订阅)、unsubscribe(取消订阅)

php的curl可以模仿用户浏览网页并且获取网页的cookie,获取cookie还有专用的参数如CURLOPT_COOKIEJAR 用于保存 cookie 到文件了,下面一起来看几个例子吧。

curl可以获取返回页面设置的cookie, 原理跟get_headers是一样的, 在返回的头信息中将"Set-Cookie:"的内容取出来即可.

测试页面/设置cookie的页面:

test.php

 代码如下 复制代码

<?php
setcookie('test', 'sssss');
setcookie('xxx', 'www');

//获取cookie的脚本

 代码如下 复制代码

<?php

$url = 'http://localhost/test.php';

$ch = curl_init($url); //初始化
curl_setopt($ch,CURLOPT_HEADER,1); //将头文件的信息作为数据流输出
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1); //返回获取的输出文本流
curl_setopt($ch, CURLOPT_HEADER, 1);
$string = curl_exec($ch);
preg_match_all('/Set-Cookie:stest=(.*)/i', $string, $results);
var_dump($results);


获取cooke并保存到文件

 代码如下 复制代码

$url = "http://www.111cn.net/";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_jar);
$content = curl_exec($ch);
curl_close($ch);


curl参数介绍

CURLOPT_COOKIEJAR 用于保存 cookie 到文件
CURLOPT_COOKIEFILE 用于将保存的 cookie 文件发送出去
CURLOPT_COOKIE 用于发送 cookie 变量

所谓 在会话结束后就过期了 是因为浏览器不保存没有过期设定的 cookie 变量,所以关闭浏览器后再次请求时就没有 cookie 发送出去

curl 处理中,如果是一次做完,只需 CURLOPT_COOKIEJAR 就可以
若要分段处理则先 CURLOPT_COOKIEJAR,后 CURLOPT_COOKIEFILE
发送 cookie 文件内容的段,不要 CURLOPT_COOKIEJAR。以避免新的 cookie 变量的影响

下面本文章来给大家介绍php打印输出棋盘的2种方法,有兴趣的朋友不防进入参考一下哦。

例子1

 代码如下 复制代码

<?php
/**
 * 隔行隔列换色
 * string fun_table(int $rows=9,int $cols=9)
 * $rows 表示行数 必须为整数 并且必须在1-20之间
 * $cols 表示列数 必须为整数 并且必须在1-20之间
 */
function fun_table($rows=9,$cols=9){
 if ($rows<1 || $rows>20){
  return "必须为整数 并且必须在1-20之间";
 }
 if ($cols<1 || $cols>20){
  return "必须为整数 并且必须在1-20之间";
 }
 if($rows!=(int)($rows)){
  return '行数 必须为整数';
 }

 if($cols!=(int)($cols)){
  return '列数 必须为整数';
 }
 $str="";
 $str.= "<table  cellspacing='0' width='500px' border = '1px' bordercolor='black'>";
 for ($i=1;$i<=$rows;$i++){
  $str.=  "<tr>";
   for ($j=1;$j<=$cols;$j++){ 
    if(($i+$j)%2){
     $str.=  "<td height='50px' bgcolor='black'>";
    }else{
     $str.=  "<td></td>";
   }
  }
 $str.=  "</tr>";
}
$str.=  "</table>";
return $str;
}
echo fun_table();
?>

例子2 简单实现棋盘-for循环

实现这个棋盘首先我们想想棋盘是怎么样的,是有很多个方格组成,然后由黑色和白色的相间的方格组成。首先我们先把方格画出来。

 

 代码如下 复制代码
<?php
echo "<table  cellspacing='0' width='500px' border = '1px' bordercolor='black'>";
for ($i=1;$i<=10;$i++){
    echo "<tr>";
    for ($j=1;$j<=10;$j++){   
            echo "<td>54im</td>";
        }
    echo "</tr>";
}
echo "</table>";
?>

得到以下结果:(是不是有点眉目了,我们现在只要把格子上颜色就可以)


php简单实现棋盘 

看到上面棋盘后,考虑下黑白格排放位置,有个规律可以发现,横排和竖排上白色格子都是基数,黑色的都是偶数,我们可以用取余的方法来判断这个格子该显示什么颜色,基数单元格我让他显示白色,偶数单元格显示黑色,基数+偶数=偶数,所以偶数单元格(黑色)我们很好找出来了。剩余的就是基数格(白色)

 代码如下 复制代码


<?php
/**
通过for循环和html实现棋盘
**/
echo "<table  cellspacing='0' width='500px' border = '1px' bordercolor='black'>";
for ($i=1;$i<=10;$i++){
    echo "<tr>";
    for ($j=1;$j<=10;$j++){   
        if(($i+$j)%2){
            echo "<td height='50px' bgcolor='black'>";
        }else{
            echo "<td></td>";
            }
        }
    echo "</tr>";
}
echo "</table>";
?>

得到的效果是这样:

php简单实现棋盘

要对微信公众平台进行开发,首先需要成为开发者,可以到https://mp.weixin.qq.com/注册一个帐号,然后按要求填写相关信息即可。
有了公众号后,在公众平台的高级功能里选择开发模式,然后在服务器配置那里填写URL和Token两个选项,Token可以随便定义,一般是英文字母加数字,但对于URL就有一点难度了,最好有自己的主机或者虚似空间,没有的最好到新浪那里注册一个免费的空间。
 
技术方面,我最讨厌理论的东西了,我喜欢实例操作,相信很多人也是这样吧,那下面我就把我的操作过程写下来吧。
下面是我的操作记录,图也截下来了,如果上面的要求都满足了,不妨也跟着步骤操作一下。
 
1、下载微信公从平台官方的示例文件
到“http://mp.weixin.qq.com/wiki/index.php?title=接入指南”,找下载PHP求例代码,如图
微信公众平台开发入门教程
 
2、获取URL
解压上面下载的文件后得到wx_sample.php,这里我把它重命名为wx.php,然后我到我的空间根目录新建一个文件夹api,再把wx.php文件上传到目录api里,这样我就获取到了,我的URL为http://w3note.com/api/wx.php,Token我就取名为w3note吧。
 
3、修改示例文件
上一步我们已经拥有了URL和Token,在填写公众平台开发模式下的服务器配置之前,先把我们先前上传的wx.php文件下载打开,找到”define("TOKEN", "weixin");“,这里我把weixin替换成我的Token名称为w3note,然后保存,上传覆盖,如图所示
微信公众平台开发入门教程
4、填写服务器配置
在微信公众平台的开发模式的服务器配置那里填写上面获取的URL和Token信息,然后提交,成功后,会有提示,“你已成为开发者”,如图所示,
微信公众平台开发入门教程
 
到这里,我已经成为开发者了,这是开发微信公众平台的开始!可能我们还对成为开发者能做什么一无所知,下面我就做一个实验,算作”扫肓“吧。
 
打开wx.php,写一个语句,调用接收器方法,如下图红框,
微信公众平台开发入门教程
 
然后找到第49行,给$contentStr重新赋值为"hello world!",如图
微信公众平台开发入门教程
 
接下来,用微信号和微信公众号通讯。
首先我用我的手机微信扫一下下面的图,然后关注w3note这个公众号。
微信公众平台开发入门教程
为了测试方便,我就登录微信网页版(用手机也可以),https://web.weixin.qq.com/
 
我向w3note这个公众号发了一个笑脸,然后它就自动回复,如图
微信公众平台开发入门教程
 
图中输出的"hello world!",就是前面代码中$contentStr变量的值。
 
再来一张
微信公众平台开发入门教程

 

给自己网站上的图片添加水印,在图片上留下属于自己的信息,这有两个好处:一是宣传自己的品牌,二是就算带图片的文章被转载了,也会自动的留下了版权。

本文主要实现了php图片上传自动给图片加水印,在下篇中我会给出用php添加文字水印的代码。

php给图片加水印其实很简单,没有想象的那么神奇,就是利用了php里面的一个GD库。说起GD库,其实就是php里面一个专门用于处理图片有关的扩展,比如我们熟悉的验证码、生成缩略图,包括今天所说的php给图片加水印都是要有GD库的支持。

提示:新安装的php环境,可能需要开启GD库,开启方法:打开php.ini,去掉extension=php_gd2.dll前面的“;”然后重启apache/iis即可。

实现并不复杂,核心代码还不到20行,主要是掌握几个函数就行了。

实现源码:

 代码如下 复制代码

<?php
 $ori_img = "images/13801220684507.jpg"; //原图
 $water_img = "logo.png"; //水印
 $new_img = "images/daixiaorui.jpg"; //生成水印后的图片
 
 $original = getimagesize($ori_img); //得到图片的信息,可以print_r($original)发现它就是一个数组
 $watermark = getimagesize($water_img);
 
 $s_original = imgCreateFrom($ori_img, $original[2]); //$original[2]是图片类型,其中1表示gif、2表示jpg、3表示png
 $s_watermark = imgCreateFrom($water_img, $watermark[2]);
 
 $posX = $original[0] - $watermark[0]-6; //X坐标(右下角)
 $poxY = $original[1] - $watermark[1]-3; //Y坐标(右下角)

 //打水印
 imagecopy($s_original, $s_watermark, $posX, $poxY, 0, 0, $watermark[0], $watermark[1]);
 //header("Content-type:image/jpeg");
 //imagejpeg($s_original); //向浏览器输出图片
 $loop = imagejpeg($s_original, $new_img); //生成新的图片(jpg格式),如果用imagepng可以生成png格式
 if($loop){
  echo "水印添加成功!";
 }
 
 //根据文件类型 创建一个新图象
 function imgCreateFrom($img_src, $val){
  switch($val){
   case 1 : $img = imagecreatefromgif($img_src);
    break;
   case 2 : $img = imagecreatefromjpeg($img_src);
    break;
   case 3 : $img = imagecreatefrompng($img_src);
    break;
  }
  return $img;
 } 
?>

给图片添加水印除了用基础的GD库实现,其实还可以ImageMagick这个工具,它的功能更强大,不过一般没多大需求,就用上面这个代码了。

[!--infotagslink--]

相关文章

  • 微信公众平台实现微信网页登陆授权开发

    微信公众平台实现微信网页登陆授权开发其实是非常的简单了,因为官方的参考程序了,下面小编就看了一站长根据官方参考做的一个网页登陆授权例子,大家可看看。 文件1:in...2016-11-25
  • JavaScript代码实现微博批量取消关注功能

    这篇文章主要介绍了JavaScript代码实现微博批量取消关注功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下...2021-02-05
  • PHP Curl模拟登录微信公众平台、新浪微博实例代码

    这篇文章主要介绍了PHP Curl模拟登录微信公众平台、新浪微博实例代码的相关资料,涉及到php curl模拟登录相关知识,需要的朋友可以参考下...2016-02-01
  • php版本微信公众平台回复乱码问题解决方法

    微信公众平开发时碰到回复中文乱码了,这个问题小编发现是编码问题,其实只要把编码转成utf8就可以解决了,具体来看看。 很多微信公众平台的自动回复程序都是 ThinkWec...2016-11-25
  • 微信公众平台开发通过php创建自定义菜单

    自定义菜单可以在后台设置但如果你使用了开发者之后那么后台的自定义菜单功能就失效了,必须通过程序来创建了,下面一起来看一个简单的通过php创建自定义菜单的例子。...2016-11-25
  • php版微信公众平台账号自定义菜单类

    微信公众平台服务号可申请自定义菜单了,其它的号暂时不支持自定义菜单了,这个不但可以使用api来操作,还可以直接在后台定义菜单与参数哦。 申请自定义菜单 服务号可...2016-11-25
  • php 微信公众平台开发之验证步骤

    微信公众平台开发我们现在做得比较多了,下面给各位介绍的是一个入门级别的微信公众平台验证基础知识了,有兴趣的和小编来看看。 开发微信的时候 需要验证一下 。...2016-11-25
  • 微信公众平台模拟登录之验证码获取

    最近在模拟登录的时候愈发的出现登录失败的情况,原因是:微信公众平台登录如果时不时的会对一些异常帐号要求输入验证码才可以登录 这个时候平台首页的登录逻辑就会...2016-11-25
  • 微信公众平台开发入门教程

    要对微信公众平台进行开发,首先需要成为开发者,可以到https://mp.weixin.qq.com/注册一个帐号,然后按要求填写相关信息即可。 有了公众号后,在公众平台的高级功能里选...2016-11-25
  • python代码实现扫码关注公众号登录的实战

    本文主要介绍了python代码实现扫码关注公众号登录的实战,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2021-11-01
  • 使用c#开发公众平台自定义菜单功能

    微信公众平台服务号开放了自定义菜单API,本案例介绍C#开发微信公众号自定义菜单功能。在此基础上可以开发更完善的自定义菜单管理功能...2020-06-25
  • 微信公众平台预约提交后发送email例子

    其实这种发送邮件是非常的简单了我们只要接受由用户提交过来的邮箱地址然后再由php的邮件控制进行邮件发送了,下面看一个综合开发例子。 首先yyuc框架是支持发送em...2016-11-25
  • 微信公众平台PHP开发版本例子

    微信公众平台现在有许多的api接口了我们可以利用微信公众平台来实现许多的一些功能,下面来看一个php版本的微信公众平台开发实例。 最近在做微信公众平台开发,一口...2016-11-25
  • 微信公众号判断用户是否已关注php代码解析

    这篇文章主要大家详细解析了微信公众号判断用户是否已关注php代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...2016-07-02
  • 微信公众平台开发关注/取消关注事件例子

    用户在关注与取消关注公众号时,微信会把这个事件推送到开发者填写的URL。方便开发者给用户下发欢迎消息或者做帐号的解绑 下面是一个微信公众平台关注和取消关注的...2016-11-25
  • 微信公众平台网页获取用户OpenID方法

    下面我们一起来看看关于微信公众平台网页获取用户OpenID方法,有需要了解的朋友可以一起来看看吧. 用户点击微信自定义菜单view类型按钮后,微信客户端将会打开开发者...2016-11-25
  • 分析微信公众平台“接收普通消息”相关数据的获取

    在微信公众平台中,有一个接收普通消息的接口,关注公众号之后,每回复一条信息,都会post到开发中心填写的地址上面去。 接收普通消息在官方开发文档中截图如下: 上面的...2016-05-19
  • 微信公众平台之CURL应用

    本文章来给各位同学介绍一下关于微信公众平台之CURL应用实例,如果你碰到此类问题不防进入参考一下吧。 这几天工作有大量用curl,curl就是模拟浏览器来传输数据,他支...2016-11-25
  • 微信公众平台智能机器人PHP开发示例

    现在使用微信公众平台的商家越来越多了,微信公众平台为我提供了大量api接口他可以实现与我们网站数据对接,然后用户输入内容自动回复相关信息,下面我来介绍微信公众平台...2016-11-25
  • 微信公众平台开发自定义菜单的教程

    微信公众平台开发自定义菜单功能打开非常的简单只需要在微信网站后台进行一些简单的设置即可,具体来给各位演示一下。 一、自定义菜单概述 自定义菜单能够帮助公众...2016-11-25