本文包含文本和图片的检测

//接收要检测的文本内容并调用检测方法
public function textCheck(Request $request){
//内容安全识别 $data['content']为要检测的文本内容
$data['content'] = htmlspecialchars($request->post('content'));
$content = $data['content'];
$output = $this->curlText($content);
     //只有当$output->errcode==0时审核通过
if($output->errcode!=0){
return json(['code' => 500,'msg'=>'内容含有违法违规内容,请修改后再提交']);
die;
}
}
//接收要检测的图片并调用检测方法
public function imgCheck(Request $request){
// 获取表单上传文件 例如上传了001.jpg
$file = request()->file('file');
$upload_path = 'uploads';
$info = $file->move($upload_path);
$path = $info->getSaveName();
//微信接口校验图片是否违规
$output = $this->curlImages($path);
if($output['errcode']!=0){
return json(['code'=>500,'msg'=>'图片不合规范']);
}
}
//获取access_token,不能用于获取用户信息的token
public function getAccessToken(){
$token_file = json_decode(file_get_contents('token.json'));
//有效期外才重新获取
if($token_file->expires_time<time()){
$appid = $this->APPID; //你的小程序appid
$appsecret = $this->APPSERRET; //你的小程序appsecret
$url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appid . '&secret=' . $appsecret;
$token_json = file_get_contents($url);
$token_json = json_decode($token_json);
$token_file->access_token = $token_json->access_token;
$token_file->expires_time = time()+7200;
$access_token = $token_json->access_token;
file_put_contents('token.json', json_encode($token_file));
}else{
$access_token = $token_file->access_token;
}
return $access_token;
} //检测文本是否含有违禁内容(频率限制:单个 appId 调用上限为 1000 次/分钟,100,000 次/天)
private function curlText($content){
$ACCESS_TOKEN = $this->getAccessToken();
$url = "https://api.weixin.qq.com/wxa/msg_sec_check?access_token=".$ACCESS_TOKEN;
$file_data = '{ "content":"'.$content.'" }';//$content(需要检测的文本内容,最大520KB)
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch , CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $file_data);
$output = curl_exec($ch);//发送请求获取结果
$output=json_decode($output,false);
curl_close($ch);//关闭会话
return $output;//返回结果
}
//检测图片是否含有违禁内容
private function curlImages($path){
$ACCESS_TOKEN = $this->getAccessToken();//自己获取access_token
$url = "https://api.weixin.qq.com/wxa/img_sec_check?access_token=".$ACCESS_TOKEN;
$file_path = 'uploads/'.$path;//接受表单文件保存本地的文件地址
$file_data = array("media" => new \CURLFile($file_path));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch , CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch , CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $file_data);
$output = curl_exec($ch);//发送请求获取结果
curl_close($ch);//关闭会话
$output = json_decode($output,true);
return $output;
}

小程序中内容审核功能的使用(后台使用thinkPHP5.1)的更多相关文章

  1. 微信小程序中悬浮窗功能的实现(主要探讨和解决在原生组件上的拖动)

    问题场景 所谓悬浮窗就是图中微信图标的按钮,采用fixed定位,可拖动和点击. 这算是一个比较常见的实现场景了. 为什么要用cover-view做悬浮窗?原生组件出来背锅了~ 最初我做悬浮窗用的不是c ...

  2. 高大上的微信小程序中渲染html内容—技术分享

    大部分Web应用的富文本内容都是以HTML字符串的形式存储的,通过HTML文档去展示HTML内容自然没有问题.但是,在微信小程序(下文简称为「小程序」)中,应当如何渲染这部分内容呢? 解决方案 wxP ...

  3. 微信小程序中在swiper-item中遍历循环添加多个数据内容(微信小程序交流群:604788754)

    在小程序中为了实现一个<swiper-item>中添加多个内容重复的标签,那就需要使用wx:for循环.如果按小程序的简易教程,循环加在block中,而swiper-item放在里面.所有 ...

  4. 微信小程序中公用内容

    微信小程序中各个页面调用公用的js 在util.js文件中 // 跳转哪里 function go(where) { wx.reLaunch({ url: where, }) } // 将方法暴露出去 ...

  5. 微信小程序中涉及虚拟产品购买,ios暂不支持的相关整理意见

    这个东西呢也不能怪微信小程序,属实苹果搞的事情,那怎么小程序相关内容去通过审核呢? 首先我们要搞清楚哪些属于虚拟商品:如某某书币,某某会员,或者是提前编辑好的网课,文档等都属虚拟商品购买,简言之就是没 ...

  6. 开发微信小程序中SSL协议的申请、证书绑定、TLS 版本处理等

    在上篇随笔<基于微信小程序的系统开发准备工作>介绍了开发微信小程序的一些前期的架构设计.技术路线 .工具准备等方面内容,本篇随笔继续这个步骤,逐步介绍我们实际开发过程中对SSL协议的申请及 ...

  7. 全栈开发工程师微信小程序-中(中)

    全栈开发工程师微信小程序-中(中) 开放能力 open-data 用于展示微信开放的数据 type 开放数据类型 open-gid 当 type="groupName" 时生效, ...

  8. 微信小程序中的 web-view 组件

    web-view 是一个可以承载 web 网页的容器,当 WXML 文件中存在 web-view 组件时,其他组件会自动全部失效,而且 web-view 承载的组件会自动铺满小程序的整个页面.其他组件 ...

  9. Senparc.Weixin.MP SDK 微信公众平台开发教程(二十一):在小程序中使用 WebSocket (.NET Core)

    本文将介绍如何在 .NET Core 环境下,借助 SignalR 在小程序内使用 WebSocket.关于 WebSocket 和 SignalR 的基础理论知识不在这里展开,已经有足够的参考资料, ...

随机推荐

  1. linux中用户和用户组的概念以及查看命令

    Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响. 例如,某台 Linux 服务器上有 4 个用户,分别是 root ...

  2. 测试一个数字是否等于 NaN

    ES6提供了一个新的 Number.isNaN() 函数,这是一个不同的函数,并且比老的全局 isNaN() 函数更可靠.

  3. 用缓冲技术OSCache 提高JSP应用的性能和稳定性

    一.概述 在Web应用中,有些报表的生成可能需要数据库花很长时间才能计算出来:有的网站提供天气信息,它需要访问远程服务器进行SOAP调用才能得到温度信息.所有这一切都属于复杂信息的例子.在Web页面中 ...

  4. Python---1基础介绍

    因公司有自动化测试需求,开始自学python,跟着廖雪峰老师的教程,一边学习,一遍记笔记,将学习过程中,遇到的大大小小奇奇怪怪的问题,记录与此. 一.安装 Python是跨平台的,它可以运行在Wind ...

  5. 分析Java中的length和length()

    在不适用任何带有自动补全功能的IDE的情况下,我们怎么获取一个数组的长度?如何获取字符串的长度? 这里我们先举用实例去分析一下:int[] arr=new int[3]:System.out.prin ...

  6. 码海拾遗:strstr()、strcmp()和strcpy()实现

    1.strstr()实现 原型:char * strstr(const char * str1, const char * str2) 说明:判断str2是否为str1的子串,如果是则返回str2第一 ...

  7. Apple store,奢华背后的辛酸

    store,奢华背后的辛酸" title="Apple store,奢华背后的辛酸">    2000年的时候,乔布斯提出了要建造苹果直营店,也就是Apple st ...

  8. 【年度开源、工具合集】牛津计划,DMTK,Graph Engine…提高你的工作效率!

    本篇合集包括以下三个部分的内容: 1.微软亚洲研究院过去一年的所有开源合集,如分布式机器学习工具包DMTK等. 2.利用微软研究院的技术提高工作效率的工具合集,如让没有机器学习背景的开发人员也能开发出 ...

  9. Vue数据绑定(一)

    Contents Vue作为当下炙手可热的前端三大框架之一,一直都想深入研究一下其内部的实现原理,去学习MVVM模式的精髓.如果说MVVM是当下最流行的图形用户界面开发模式,那么数据绑定则是这一模式的 ...

  10. 【HI AI:人机协同 赋能未来系列】计算机是最好的左脑

    AI:人机协同 赋能未来系列]计算机是最好的左脑"> 编者按: 计算机领域的热点总是在不断更替,从大数据到云计算再到人工智能,这些热点的背后离不开专家学者们在这些领域一点一滴聚沙成塔的 ...