define('MSG_SEC_CHECK','https://api.weixin.qq.com/wxa/msg_sec_check?');//小程序敏感詞檢查
define('IMG_SEC_CHECK','https://api.weixin.qq.com/wxa/img_sec_check?');//小程序圖片檢查
define('OAUTH_TOKEN_URL','https://api.weixin.qq.com/cgi-bin/token?'); //獲取授權access_token
//檢測敏感詞
function msg_sec_check($appid,$secret,$content){
$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(['content'=>$content],JSON_UNESCAPED_UNICODE));//網上看到的基本都是直接讓中文給json轉義了,實測json轉義後無法檢測出實際違規內容
$result = json_decode(post_request($url, $data, true);
//返回數據自行根據自己需要進行判斷
return $result;
}
//圖片檢測($media參數格式爲['media'=>new \CURLFile()],php5.5以上)
function img_sec_check($appid,$secret,$media){
$web_access_token = get_access_token($appid,$secret);
$params = [
'access_token' => $web_access_token,
];
$request_params = to_url_params($params);
$url = IMG_SEC_CHECK . $request_params;
$result = json_decode(post_request($url, $media, true);
//返回數據自行根據自己需要進行判斷
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(get_request($url), true);
//返回數據自行根據自己需要進行判斷
return $result['access_token'];
}
//參數處理
function to_url_params($params){
$buff = "";
foreach ($params as $k => $v) {
if ($k != "sign") {
$buff .= $k . "=" . $v . "&";
}
}
$buff = trim($buff, "&");
return $buff;
}
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;
}
使用案例
//敏感詞
$appid = "";
$secret = "";
$content = "敏感詞";//自己想
$file = "./uploads/images/abc.jpeg";
msg_sec_check($appid,$secret,$content);
//圖片檢測
$media = ['media'=>new \CURLFile(realpath($file),'image/jpeg')];//php>=5.5
$media = ['media'=>'@'.realpath($file)];//php<5.5(未實測,可能缺少mine參數)
img_sec_check($appid,$secret,$media);