Other/其他

$_SERVER 判断请求是否来自微信公众号

也想出现在这里?联系我们
创客云

最近折腾了下微信公众号与网站对接的问题,因为没能将微信公众号发送的请求与正常的网站请求区分开发生了一点小小的错误,比如下面这种:
$_SERVER 判断请求是否来自微信公众号-云模板
在“快速编辑”已发布文章的属性时的报错,看来是有必要区分下微信发送的请求与正常请求了。

百度了一下,发现大部分方法都是通过判断 UA 信息来实现判断的,比如这种:

也想出现在这里?联系我们
创客主机
  1.     // 判断请求是否来自微信
  2.     if(strpos($_SERVER["HTTP_USER_AGENT"],"MicroMessenger")){
  3.     	echo '是微信公众号发送的请求!';
  4.     }else{
  5.     	echo '不是微信公众号发送的请求!';
  6.     }

还有这种:

  1.     // 判断请求是否来自微信
  2.     if( preg_match( '/MicroMessenger/', $_SERVER['HTTP_USER_AGENT'] ) ) {
  3.     	echo '是微信公众号发送的请求!';
  4.     }

其实都是查询 UA 信息中是否包含“MicroMessenger”内容来实现的。

但是很不幸,经本人测试无效!不知为何我获取的 UA 信息仅有“Mozilla/4.0”的内容。。。

此路不通再选一路,微信公众号每次发送请求都会请求我们配置好的地址,也就是下面这里,微信公众号配置时 URL 后面的传递参数:
$_SERVER 判断请求是否来自微信公众号-云模板
所以可以通过查找这里的参数判断请求是否来自微信公众号,具体代码如下:

  1.     // 非微信公众号请求直接返回
  2.     $request_sign = '这里填写你在微信公众号配置的URL传递参数';
  3.     if ( $_SERVER['REQUEST_METHOD'] == 'POST' && strpos($_SERVER['REQUEST_URI'], $request_sign) == 0 ) {
  4.     	$default_reply    = "不是微信公众号发送的请求!";
  5.     	return;
  6.     }else{
  7.     	$default_reply    = "是微信公众号发送的请求!";
  8.     }

最终测试成功!

本文由 云模板 作者:PetitQ 发表,转载请注明来源!

也想出现在这里?联系我们
创客主机

发表评论

热销模板

Nastik - 创意企业作品展示网站WordPress汉化模板

Envato

本站承接 WordPress / PbootCMS / DedeCMS 等
系统建站、仿站、开发、定制等业务!

精品专区

Contact us all-in-one button with callback - 轻量级侧边按钮客服插件,允许设置自定义的提示语,还支持添加无限数量的联系方式,不仅支持国内的微信二维码、QQ等主流程序,还支持几乎所有国外的热门社交工具、及时聊天程序等,演示参考我们官网右下角客服按钮。

购买插件