微信小程序php版 小程序敏感词检查2.0版本
网上小程序敏感词检查都是1.0版本的代码,易做图已经修改成2.0版本,并且正在使用,欢迎大家测试源码
由于图片检测是异步30分钟才能处理,加上易做图小程序没有图片上传功能,需要的老铁自己研究下,这里只是提供 内容安全文本检测接口 msg_sec_check
1,包含文件例如 inch.php
define('MSG_SEC_CHECK', 'https://api.weixin.qq.com/wxa/msg_sec_check?'); //小程序敏感词检查
define('OAUTH_TOKEN_URL', 'https://api.weixin.qq.com/cgi-bin/token?'); //获取授权access_token
//检测敏感词
function msg_sec_check($appid, $secret, $content,$openid) //增加openid
{
$web_access_token = get_access_token($appid, $secret);
$params = [
'access_token' => $web_access_token,
];
$request_params = to_url_params($params);
$url = MSG_SEC_CHECK . $request_params;
$data = json_encode([
'openid' => $openid,
'scene' => 1, //场景值错误(目前支持场景 1 资料;2 评论;3 论坛;4 社交日志)
'version' => 2, //2.0版本
'content' => $content], JSON_UNESCAPED_UNICODE); //网上看到的基本都是直接让中文给json转义了,实测json转义后无法检测出实际违规内容
$result = json_decode(curl_request($url, $data));
return $result;
}
//获取微信access_token(自行优化一下,可存缓存)
function get_access_token($appid, $secret)
{
$params = [
'grant_type' => 'client_credential',
'appid' => $appid,
'secret' => $secret,
];
$request_params = to_url_params($params);
$url = OAUTH_TOKEN_URL . $request_params;
$result = json_decode(curl_request($url), true);
//返回数据自行根据自己需要进行判断
return $result['access_token'];
}
//参数处理 也可以直接去拼凑url 然后 删除本段
function to_url_params($params)
{
$buff = "";
foreach ($params as $k => $v) {
if ($k != "sign") {
$buff .= $k . "=" . $v . "&";
}
}
$buff = trim($buff, "&");
return $buff;
}
//提交数据模块
function curl_request($url = '', $postData = '', $options = array())
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
if (!empty($postData)) {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
}
curl_setopt($ch, CURLOPT_TIMEOUT, 30); //设置cURL允许执行的最长秒数
if (!empty($options)) {
curl_setopt_array($ch, $options);
}
//https请求 不验证证书和host
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
2,调用方法
require "inch.php";
$appid = " "; //你自己的微信开发者appId
$secret = " "; //你自己的appId秘钥
$openid="";//获取访问者的openid
$test="测试文字自己输入敏感内容可以从用户form提交获取";
$r=msg_sec_check($appid,$secret,$test,$openid);
//echo "<hr/>结果:";
//echo $r->errcode; //0为正常 其他为异常参考官方接口 https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/sec-check/security.msgSecCheck.html
//echo "<br/>提示:";
//echo $r->errmsg; //提示信息
//echo "<br/>建议:";
$rr=$r->result->suggest; //建议,有risky风险、pass通过、review审核三种值
if ($rr!="pass") exit("易做图提示:$rr 内容不通过,请更改!"); //根据自己的实际处理结果,由于易做图小程序逻辑简单,不通过直接禁止访问
最后提示:
你也可以接入自己的信息过滤插件。
总之内容必须过滤,但是没人让你必须用微信小程序官网的接口。
自己的本地过滤接口,程序开发更简单,速度更快,推荐用本地敏感词过滤。
本地缺点就是需要自己收集敏感词,官网优点就是他们已经收集了很多敏感词