给WordPress网站登录接入腾讯防水墙(腾讯验证码)验证功能限制垃圾信息

[重要通告]如您遇疑难杂症,本站支持知识付费业务,扫右边二维码加博主微信,可节省您宝贵时间哦!

wordpress现在如果没有啥限制或者防止措施,你会发现依然每天会有很多的垃圾信息,甚至还有恶意登陆信息,出现这样的办法,站内也写过文章,关于限制的, wordpress使用代码屏蔽讨厌的垃圾评论的方式方法  其实这样很是有效,但这不是还是希望正规一点嘛,那就有了腾讯的防水墙,不过腾讯防水墙现在变成了验证码;

WordPress网站登录接入腾讯验证码教程

申请地址:

https://console.cloud.tencent.com/captcha

操作步骤:

1、申请账号并登陆

2、在APPID列表中添加“新建验证”,验证名称随意,域名是你自己的域名,场景根据实际情况选择,我选择的账号场景,但是依然可以在评论场景使用。

3、确定后点击右侧的“查看详情”,基础配置

4、将申请得到的APPID和APP Secret Key复制到WordPress中,勾选评论开启验证。

申请完了就要接入代码;

不多啰嗦,直接上码,看备注修改自己的 App ID 和 App Secret Key

<?php
/**
* WordPress 接入腾讯防水墙,给网站登录加上验证功能
* 原文地址:https://www.laoliang.net/jsjh/technology/11257.html
* 老梁博客
*/

function add_login_head() {
echo '<script src="https://ssl.captcha.qq.com/TCaptcha.js"></script>';
echo '<style type="text/css">.login_button {line-height:38px;border-radius:3px;cursor:pointer;color:#555;background:#eee;border:2px solid #a5a5a5;font-size:14px;margin-bottom:10px;text-align:center;transition:.5s;}.login_button:hover{color:#fff;background:#444;border-color:#444;}</style>';
}
function add_captcha_body(){ ?>
<input type="hidden" id="wp007_tcaptcha" name="tcaptcha_007" value="" />
<input type="hidden" id="wp007_ticket" name="syz_ticket" value="" />
<input type="hidden" id="wp007_randstr" name="syz_randstr" value="" />
<!-- 修改下面的 data-appid 值 -->
<div id="TencentCaptcha" data-appid="App ID" data-cbfn="callback" class="login_button">验证</div>
<script>
window.callback = function(res){
if(res.ret === 0){
var but = document.getElementById("TencentCaptcha");
document.getElementById("wp007_ticket").value = res.ticket;
document.getElementById("wp007_randstr").value = res.randstr;
document.getElementById("wp007_tcaptcha").value = 1;
but.style.cssText = "color:#fff;background:#4fb845;border-color:#4fb845;pointer-events:none";
but.innerHTML = "验证成功";
}
}
</script>
<?php
}

/**
* 处理登录二次验证
*/
function validate_tcaptcha_login($user) {
$slide=$_POST['tcaptcha_007'];
if($slide == ''){
return new WP_Error('broke', __("请先进行真人验证!!!"));
}
else{
$result = validate_login($_POST['syz_ticket'],$_POST['syz_randstr']);
if ($result['result']) {
return $user;
} else{
return new WP_Error('broke', $result['message']);
}
}

}

/**
* 请求服务器验证
*/
function validate_login($Ticket,$Randstr){
$AppSecretKey = "App Secret Key"; //修改App Secret Key
$appid = "App ID"; //修改App ID
$UserIP = $_SERVER["REMOTE_ADDR"];

$url = "https://ssl.captcha.qq.com/ticket/verify";
$params = array(
"aid" => $appid,
"AppSecretKey" => $AppSecretKey,
"Ticket" => $Ticket,
"Randstr" => $Randstr,
"UserIP" => $UserIP
);
$paramstring = http_build_query($params);
$content = txcurl($url,$paramstring);
$result = json_decode($content,true);
if($result){
if($result['response'] == 1){
return array(
'result'=>1,
'message' => ''
);
}else{
return array(
'result'=>0,
'message' => $result['err_msg']
);
}
}else{
return array(
'result'=>0,
'message' => '请求失败,请再试一次!'
);
}
}

 

add_action('login_head', 'add_login_head');
add_action('login_form','add_captcha_body');
add_filter('wp_authenticate_user', 'validate_tcaptcha_login',100,1);

/**
* 请求接口返回内容
* @param string $url [请求的URL地址]
* @param string $params [请求的参数]
* @param int $ipost [是否采用POST形式]
* @return string
*/
function txcurl($url,$params=false,$ispost=0){
$httpInfo = array();
$ch = curl_init();

curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
curl_setopt( $ch, CURLOPT_USERAGENT , 'JuheData' );
curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );
curl_setopt( $ch, CURLOPT_TIMEOUT , 60);
curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
if( $ispost )
{
curl_setopt( $ch , CURLOPT_POST , true );
curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );
curl_setopt( $ch , CURLOPT_URL , $url );
}
else
{
if($params){
curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );
}else{
curl_setopt( $ch , CURLOPT_URL , $url);
}
}
$response = curl_exec( $ch );
if ($response === FALSE) {
//echo "cURL Error: " . curl_error($ch);
return false;
}
$httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );
$httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );
curl_close( $ch );
return $response;
}

将上面代码保存为新的文件 qq-captcha.php 上传到主题目录,然后在主题 functions.php 文件里添加require get_template_directory() . '/qq-captcha.php';引入就可以。或者直接把上面代码复制到 functions.php 文件里,方法任选其一即可;

来看看效果~~

问题未解决?付费解决问题加Q或微信 2589053300 (即Q号又微信号)右上方扫一扫可加博主微信

所写所说,是心之所感,思之所悟,行之所得;文当无敷衍,落笔求简洁。 以所舍,求所获;有所依,方所成!

支付宝赞助
微信赞助

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如您下载该资源,行为将被视为对《免责声明》全部内容的认可->联系老梁投诉资源
LaoLiang.Net部分资源来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:service@laoliang.net
意在交流学习,欢迎赞赏评论,如有谬误,请联系指正;转载请注明出处: » 给WordPress网站登录接入腾讯防水墙(腾讯验证码)验证功能限制垃圾信息

发表回复

本站承接,网站推广(SEM,SEO);软件安装与调试;服务器或网络推荐及配置;APP开发与维护;网站开发修改及维护; 各财务软件安装调试及注册服务(金蝶,用友,管家婆,速达,星宇等);同时也有客户管理系统,人力资源,超市POS,医药管理等;

立即查看 了解详情