之前奶爸分享过3种实现博客公众号引流的方法,其中就包括使用关键词回复获取密码的插件,不过那个插件的验证码是站长手动输入的,今天给大家推荐的这款是自动生成和获取验证码,实现验证码自动更换引流的功能。 插件代码如下:
captcha = $wx_captcha;
}
private function checkSignature() {
$signature = $_GET["signature"];
$timestamp = $_GET["timestamp"];
$nonce = $_GET["nonce"];
$token = WX_TOKEN;
$tmpArr = array($token, $timestamp, $nonce);
sort($tmpArr, SORT_STRING);
$tmpStr = implode($tmpArr);
$tmpStr = sha1($tmpStr);
if ($tmpStr == $signature)
return true; else
return false;
}
protected function valid() {
$echoStr = $_GET["echostr"];
//valid signature , option
if ($this->checkSignature()) {
echo $echoStr;
exit;
} else {
echo 'error signature';
}
}
public function responseMsg() {
//如果是验证请求,则执行签名验证并退出
if (!empty($_GET["echostr"])) {
$this->valid();
//验证签名是否有效
return;
//返回退出
}
if ($_SERVER['REQUEST_METHOD'] != 'POST') {
echo '';
return;
}
//如果不是验证请求,则
//首先,取得POST原始数据(XML格式)
//$postData = $GLOBALS["HTTP_RAW_POST_DATA"];
$postData = file_get_contents('php://input');
if (empty($postData)) {
echo '';
return;
}
//如果没有POST数据,则退出
if (!empty($postData)) {
//解析POST数据(XML格式)
$object = simplexml_load_string($postData, 'SimpleXMLElement', LIBXML_NOCDATA);
$messgeType = trim($object->MsgType);//取得消息类型
$this->fromUser = "" . $object->FromUserName;
$this->toUser = "" . $object->ToUserName;
$keyword = trim($object->Content);
if( $messgeType == 'text' && $keyword == '验证码') {
$response_content = '您的验证码为:【'.$this->captcha.'】,验证码有效期为2分钟,请抓紧使用,过期需重新申请';
$xmlTemplate = "
%s
%d
";
$xmlText = sprintf($xmlTemplate, $this->fromUser, $this->toUser, time(), $response_content, 0);
echo $xmlText;
}
} else {
echo "";
exit;
}
}
}
//class end
//生成微信验证码
function wx_captcha(){
date_default_timezone_set('Asia/Shanghai');
$min = floor(date("i")/2);
$day = date("d");
$day = ltrim($day,0);
$url = home_url();
$captcha = sha1($min.$url.WX_TOKEN);
$captcha = substr($captcha , $day , 6);
return $captcha;
}
function wx_process() {
global $object;
$object = new Wechat_Captcha(wx_captcha());
$object->responseMsg();
return;
}
add_action('pre_get_posts', 'wx_process', 4);
/*** 微信端结束 ***/
/*** WP端开始 ***/
//密码可见
function wx_captcha_view() {
$action = $_POST['action'];
$post_id = $_POST['id'];
$pass = $_POST['pass'];
$wxcaptcha = wx_captcha();
if(!isset( $action ) || !isset( $post_id ) || !isset( $pass ) ) exit('400');
if($pass == $wxcaptcha ) {
$pass_content = get_post_meta($post_id, '_pass_content')[0];
exit($pass_content);
}else{
exit('400');
}
}
add_action('wp_ajax_nopriv_gdk_pass_view', 'wx_captcha_view');
add_action('wp_ajax_gdk_pass_view', 'wx_captcha_view');
// 部分内容输入密码可见
function gdk_secret_view($atts, $content = null) {
$pid = get_the_ID();
add_post_meta($pid, '_pass_content', $content, true) or update_post_meta($pid, '_pass_content', $content);
if ( current_user_can( 'administrator' ) ) { return $content; }//admin show
return '
本段内容已被隐藏,您需要扫码关注微信公众号申请验证码查看,发送【验证码】获取验证码,验证码2分钟有效
';
}
add_shortcode('wxcaptcha', 'gdk_secret_view');
//按钮
function wx_captcha_btn() {
?>
你需要配置的地方就两处:// 此token必须和微信公众平台中的设置保持一致
define('WX_TOKEN', '');
define('WX_QR', '');//公众号二维码一个是wx_token,在微信公众号管理后台可以获取,另外一个就是你公众号的二维码图片地址。 ダウンロードURL 使用方法: 1、下载并安装插件 2、修改插件的wx_token和wx_qr的值。 3、发文章使用短代码[wxcaptcha]和[/wxcaptcha]把需要隐藏的内容包裹起来。 作者发布地址:https://gitcafe.net/archives/10584.html 
コメントは閉鎖されました
この記事のコメント機能は閉鎖されています。ご質問がある場合は、他の方法でお問い合わせください。