当前位置:编程学习 > php >>

微信小程序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 内容不通过,请更改!"); //根据自己的实际处理结果,由于易做图小程序逻辑简单,不通过直接禁止访问


最后提示:

你也可以接入自己的信息过滤插件。

总之内容必须过滤,但是没人让你必须用微信小程序官网的接口。

自己的本地过滤接口,程序开发更简单,速度更快,推荐用本地敏感词过滤。

本地缺点就是需要自己收集敏感词,官网优点就是他们已经收集了很多敏感词

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,