当前位置:首页 > 代码 > 正文

微信公众php代码(微信公众php代码怎么用)

admin 发布:2023-01-31 14:00 35


今天给各位分享微信公众php代码的知识,其中也会对微信公众php代码怎么用进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

php写的微信公众平台代码如何进行断点调试?

首先需要说明的是,php程序调试需要手动编写部分代码,目的是断截程序线程的执行,输出指定环节的结果,就是所谓的断点调试。所以,实际上需要讨论的问题是采用什么断点代码更合适。

die()和exit()

die()和exit()函数都有终止线程的作用,是php断点调试需要使用的最主要的函数,它们也是php程序员使用非常频繁的函数。然而两者又有什么区别呢?在程序调试时需要注意什么问题呢?

die()函数一般与“or”一并使用,写作“or die()”,经常看到这样的语句:

$file = fopen($filename, 'r') or die("抱歉,无法打开: $filename")

or在这里是这样理解的,因为在PHP中并不区分数据类型,所以$file既可以是int也可以bool,所以这样的语句不会报错。但其处理过程可能有些朋友不大明白。其实在大多数的语言中, bool or bool这样的语句中,如果前一个值为真后一个值就不会再判断了。这里也是的,所以如果fopen函数执行正确的话,会返回一个大于0的int值(这其实就是"真"),后面的语句就不会执行了。如果fopen函数执行失败,就会返回false,那么就会判断后面的表达式是否为真了。结果执行了die()之后,不管返回什么,程序都已经停止执行了,并且显示指定的出错信息,也就达到了调试的目的。就这样。

实际上,die和exit是等价的,都是用来终止当前脚本。

php手册对两者的解释如是说:

exit() 函数输出一条消息,并退出当前脚本。该函数是 die() 函数的别名。

die() 函数输出一条消息,并退出当前脚本。该函数是 exit() 函数的别名。

实例:

?php $site = ""; fopen($site,"r") or exit("Unable to connect to $site"); ?

?php $site = ""; fopen($site,"r") or die("Unable to connect to $site"); ?

var_dump()和print_r()

var_dump -- 打印变量的相关信息

void var_dump ( mixed expression [, mixed expression [, ...]] )

此函数显示关于一个或多个表达式的结构信息,包括表达式的类型与值。数组将递归展开值,通过缩进显示其结构。

提示: 为了防止程序直接将结果输出到浏览器,可以使用输出控制函数(output-control functions)来捕获此函数的输出,并把它们保存到一个例如 string 类型的变量中。

?php

$a = array (1, 2, array ("a", "b", "c"));

var_dump ($a);

$b = 3.1;

$c = TRUE;

var_dump($b,$c);

?

var_dump()可以输出多个变量,如:var_dump($b,$c)

print_r -- 打印关于变量的易于理解的信息

bool print_r ( mixed expression [, bool return] )

注: 参数 return 是在 PHP 4.3.0 的时候加上的

print_r() 显示关于一个变量的易于理解的信息。如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。object 与数组类似。

记住,print_r() 将把数组的指针移到最后边。使用reset() 可让指针回到开始处。

pre

?php

$a = array ('a' = 'apple',

'b' = 'banana',

'c' = array ('x','y','z'));

print_r ($a);

?

/pre

上边的代码将输出:

pre Array ( [a] = apple [b] = banana [c] = Array ( [0] = x [1] = y [2] = z ) ) /pre

如果想捕捉 print_r() 的输出,可使用 return 参数。若此参数设为 TRUE,print_r() 将不打印结果(此为默认动作),而是返回其输出。

例子:return 参数示例

?php

$b = array ('m' = 'monkey',

'foo' = 'bar',

'x' = array ('x', 'y', 'z'));

$results = print_r ($b, true); //$results 包含了 print_r 的输出结果

?

注: 如果想在 PHP 4.3.0 之前的版本中捕捉 print_r() 的输出,可使用输出控制函数。

注: 在 PHP 4.0.4 之前的版本中,如果给出的 array 或 object 包含了直接或间接指向自身的引用,print_r() 将永远继续下去。print_r($GLOBALS) 就是一个例子,因为 $GLOBALS 自身即是全局变量,其包含了指向自身的引用。

Zend Debugger

php断点调试,有人提到用Zend Debugger,简单方便,适合菜鸟使用。不过本人因没有用过,在此不作讨论。

php如何编写一个微信公众平台的消息推送?

给你个代码样例 不可以直接复制使用

/**

 * 发送模板消息

 * @param $tmpId 模板ID

 * @param $openId 用户openID

 * @param $param 模板参数

 * @param $url

 * @return mixed

 * @author fjlhuman

 */

public function sendTmpMessage($tmpId,$openId,$param,$url){

    $postUrl = "".$this-accessToken;

    $arrData['touser']=$openId;

    $arrData['template_id']=$tmpId;//'6OT8DDNF-CbiadTsbEKKSCZVHe_9hnhxOBT7EvURNcE';

    $arrData['url']=$url;

    $arrData['data']=$param;

    $json=json_encode($arrData);

    $result = Curl::post($postUrl, $json);

    $result=json_decode($result, true);

    $rData['isTure']=false;

    $rData['msg']="";

    if($result['errcode']==0){

        $rData['isTure']=true;

        $rData['msg']="发送成功";

    }else{

        $rData['msg']=$result['errcode'];

    }

    return $rData;

}

详情请参考  微信公众平台技术文档-模板消息接口  

求微信公众号接口 给客户发送信息的 PHP代码

你好,可以用客服消息接口或模板消息接口实现。但是需要认证公众号才能有权限。

认证服务号可以发送客服接口消息[需要对应openid24小时内有互动]和模板消息,订阅号则没有模板消息权限。

发送文字消息示例:

$postdata ='{"touser":"o5BkRs_vRwfPqAb1ceXHfJDzmQ5o","msgtype":"text","text":{"content":"Hello World"}}';

    $opts = array(

        'http' = array(

            'method' = 'POST',

            'Content-Length' = strlen($postdata),

            'Host' = 'api.weixin.qq.com',

            'Content-Type' = 'application/json',

            'content' = $postdata

        )

    );

    $context = stream_context_create($opts);

    $result = file_get_contents('你的access_token', true, $context);

    echo $result;

微信公众发ticket取得二维码图并发微信素材获得media_id..求PHP代码??

private function receiveEvent($object)

{

$contentStr = "";

switch ($object-Event)

{

case "subscribe":

$contentStr = "欢迎 ";

if (isset($object-EventKey)){

$contentStr = "关注二维码场景 ".$object-EventKey;

}

break;

case "SCAN":

$contentStr = "扫描 ".$object-EventKey;

//要实现统计分析,则需要扫描事件写入数据库,这里可以记录 EventKey及用户OpenID,扫描时间

break;

default:

break;

}

$resultStr = $this-transmitText($object, $contentStr);

return $resultStr;

微信公众平台变乱码了

微信公众平台出现乱码分有编辑模式的乱码和群发消息的乱码两种。你提到的这种情况是编辑模式下出现乱码,出现这种情况可以推出微信公众平台再重新登录试试,也有可能是电脑中了病毒,用电脑管家清理一下电脑再登录进去试试。

如果出现的是群发消息的乱码,一般是因为保存的php文件没有为utf-8编码,建议进行以下操作:

1、新建一个文本文件,名称随意取,例如:1.txt

2、打开1.txt文件-另存为xxx.php(文件名为你将要上传到服务器上的文件名相同,例如:index.php),并将编码改为UTF-8,保存。

3、将之前你写的php文件的代码复制到index.php文件中。将index.php上传的服务器相应的目录,并覆盖原文件。在手机上测试效果,看看问题有没有解决,如果问题依旧没能解决建议向相应的技术人员需求帮助。

乱码,指的是由于本地计算机在用文本编辑器打开源文件时,使用了不相应字符集而造成部分或所有字符无法被阅读的一系列字符。造成其结果的原因是多种多样的。

扩展资料

汉字乱码现象有4种类型:

文本乱码:是Windows系统显示乱码,如:菜单、桌面、提示框等。这是由于注册表中有关字体部分的设置不当引起的;

文档乱码:是可执行文件本来显示中文的地方出现乱码。这种乱码形成的原因比较复杂,有第1类的乱码原因,也可能是软件中用到的中文动态链接库被英文动态链接库覆盖所造成的;

文件乱码:主要是指邮件乱码;

网页乱码:是由于港澳的繁体中文大五码(BIG5)与大陆简体中文(GB2312)不通用而造成的。

修正乱码,可以使用系统内码转换工具,如“南极星”等,将系统内码转换为对应内码,字符即可正确显示。

微信公众平台如何通过php代码给会员发送被动响应消息

明确在哪接收消息

从微信公众平台接口消息指南中可以了解到,当用户向公众帐号发消息时,微信服务器会将消息通过POST方式提交给我们在接口配置信息中填写的URL,而我们就需要在URL所指向的请求处理类CoreServlet的doPost方法中接收消息、处理消息和响应消息。

接收、处理、响应消息

下面先来看我已经写好的CoreServlet的完整代码:

package org.liufeng.course.servlet;

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.liufeng.course.service.CoreService;

import org.liufeng.course.util.SignUtil;

/**

* 核心请求处理类

*

* @author liufeng

* @date 2013-05-18

*/

public class CoreServlet extends HttpServlet {

private static final long serialVersionUID = 4440739483644821986L;

/**

* 确认请求来自微信服务器

*/

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// 微信加密签名

String signature = request.getParameter("signature");

// 时间戳

String timestamp = request.getParameter("timestamp");

// 随机数

String nonce = request.getParameter("nonce");

// 随机字符串

String echostr = request.getParameter("echostr");

PrintWriter out = response.getWriter();

// 通过检验signature对请求进行校验,若校验成功则原样返回echostr,表示接入成功,否则接入失败

if (SignUtil.checkSignature(signature, timestamp, nonce)) {

out.print(echostr);

}

out.close();

out = null;

}

/**

* 处理微信服务器发来的消息

*/

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

// 将请求、响应的编码均设置为UTF-8(防止中文乱码)

request.setCharacterEncoding("UTF-8");

response.setCharacterEncoding("UTF-8");

// 调用核心业务类接收消息、处理消息

String respMessage = CoreService.processRequest(request);

// 响应消息

PrintWriter out = response.getWriter();

out.print(respMessage);

out.close();

}

}

代码说明:

1)第51行代码:微信服务器POST消息时用的是UTF-8编码,在接收时也要用同样的编码,否则中文会乱码;

2)第52行代码:在响应消息(回复消息给用户)时,也将编码方式设置为UTF-8,原理同上;

3)第54行代码:调用CoreService类的processRequest方法接收、处理消息,并得到处理结果;

4)第57~59行:调用response.getWriter().write()方法将消息的处理结果返回给用户

从doPost方法的实现可以看到,它是通过调用CoreService类的processRequest方法接收、处理消息的,这样做的目的是为了解耦,即业务相关的操作都不在Servlet里处理,而是完全交由业务核心类CoreService去做。下面来看CoreService类的代码实现:

package org.liufeng.course.service;

import java.util.Date;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.liufeng.course.message.resp.TextMessage;

import org.liufeng.course.util.MessageUtil;

/**

* 核心服务类

*

* @author liufeng

* @date 2013-05-20

*/

public class CoreService {

/**

* 处理微信发来的请求

*

* @param request

* @return

*/

public static String processRequest(HttpServletRequest request) {

String respMessage = null;

try {

// 默认返回的文本消息内容

String respContent = "请求处理异常,请稍候尝试!";

// xml请求解析

MapString, String requestMap = MessageUtil.parseXml(request);

// 发送方帐号(open_id)

String fromUserName = requestMap.get("FromUserName");

// 公众帐号

String toUserName = requestMap.get("ToUserName");

// 消息类型

String msgType = requestMap.get("MsgType");

// 回复文本消息

TextMessage textMessage = new TextMessage();

textMessage.setToUserName(fromUserName);

textMessage.setFromUserName(toUserName);

textMessage.setCreateTime(new Date().getTime());

textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT);

textMessage.setFuncFlag(0);

// 文本消息

if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)) {

respContent = "您发送的是文本消息!";

}

// 图片消息

else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)) {

respContent = "您发送的是图片消息!";

}

// 地理位置消息

else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)) {

respContent = "您发送的是地理位置消息!";

}

// 链接消息

else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)) {

respContent = "您发送的是链接消息!";

}

// 音频消息

else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)) {

respContent = "您发送的是音频消息!";

}

// 事件推送

else if (msgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)) {

// 事件类型

String eventType = requestMap.get("Event");

// 订阅

if (eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)) {

respContent = "谢谢您的关注!";

}

// 取消订阅

else if (eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)) {

// TODO 取消订阅后用户再收不到公众号发送的消息,因此不需要回复消息

}

// 自定义菜单点击事件

else if (eventType.equals(MessageUtil.EVENT_TYPE_CLICK)) {

// TODO 自定义菜单权没有开放,暂不处理该类消息

}

}

textMessage.setContent(respContent);

respMessage = MessageUtil.textMessageToXml(textMessage);

} catch (Exception e) {

e.printStackTrace();

}

return respMessage;

}

}

代码说明:

1)第29行:调用消息工具类MessageUtil解析微信发来的xml格式的消息,解析的结果放在HashMap里;

2)32~36行:从HashMap中取出消息中的字段;

3)39-44、84行:组装要返回的文本消息对象;

4)47~82行:演示了如何接收微信发送的各类型的消息,根据MsgType判断属于哪种类型的消息;

5)85行:调用消息工具类MessageUtil将要返回的文本消息对象TextMessage转化成xml格式的字符串;

关于事件推送(关注、取消关注、菜单点击)

对于消息类型的判断,像文本消息、图片消息、地理位置消息、链接消息和语音消息都比较好理解,有很多刚接触的朋友搞不懂事件推送消息有什么用,或者不清楚该如何判断用户关注的消息。那我们就专门来看下事件推送,下图是官方消息接口文档中关于事件推送的说明:

关于微信公众php代码和微信公众php代码怎么用的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/35792.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载