無作為
不僅僅是一種態度!

DUX主題輸入QQ自動獲取昵稱郵箱

看見許多網站用戶在評論的時候都可以直接輸入QQ自動獲取昵稱和郵箱,之前無作為也分享過完整版的教程,不過很遺憾并不適用與dux。

原文:WordPress輸入QQ自動獲取用戶昵稱郵箱,這個教程是最原始最好用的版本,不過不適用dux,所以下面給大家帶來dux輸入QQ獲取用戶信息的教程。

DUX主題輸入QQ自動獲取昵稱郵箱

更新時間:2019年5月14日

下面補充更新一下,dux主題如何實現以上代碼,其他主題可以借鑒。

折騰了幾個小時,終于搞定dux主題的問題,這里大家完全按照操作步驟來即可!

所有文件都在下載頁面可以直接下載!

1、首先把下載的文件func_getqqinfo.php加入到網站根目錄:(大家也可自己新建這個文件名“func_getqqinfo.php”在復制下面代碼到里面)

<?php
header("content-Type: text/html; charset=utf-8");
$type = @$_GET['type'] ? $_GET['type'] : '';
if(empty($type)){
	//header("Location:http://www.btilnp.live/");
	exit;
}
if($type == "getqqnickname"){
	$qq = isset($_GET['qq']) ? addslashes(trim($_GET['qq'])) : '';
	if(!empty($qq) && is_numeric($qq) && strlen($qq) > 4 && strlen($qq) < 13){
		$qqnickname = file_get_contents('http://users.qzone.qq.com/fcg-bin/cgi_get_portrait.fcg?uins='.$qq); // API
		if($qqnickname){
			$qqnickname = mb_convert_encoding($qqnickname, "UTF-8", "GBK");
			echo $qqnickname;
		}
	}
}
if($type == "getqqavatar"){
	$qq = isset($_GET['qq']) ? addslashes(trim($_GET['qq'])) : '';
	if(!empty($qq) && is_numeric($qq) && strlen($qq) > 4 && strlen($qq) < 13){
		$qqavatar = file_get_contents('http://ptlogin2.qq.com/getface?appid=1006102&imgtype=3&uin='.$qq);  // API
		if($qqavatar){
			echo str_replace("pt.setHeader","qqavatarCallBack",$qqavatar);
		}
	}
}

上面的代碼和步驟不需要任何改動,照做即可。

2、把以下代碼加入主題function.php中:(此處內容無需改動)

// 數據庫插入評論表單的qq字段 
add_action('wp_insert_comment','inlojv_sql_insert_qq_field',10,2);
function inlojv_sql_insert_qq_field($comment_ID,$commmentdata) {
	$qq = isset($_POST['new_field_qq']) ? $_POST['new_field_qq'] : false;  
	update_comment_meta($comment_ID,'new_field_qq',$qq); // new_field_qq 是表單name值,也是存儲在數據庫里的字段名字
}
// 后臺評論中顯示qq字段
add_filter( 'manage_edit-comments_columns', 'add_comments_columns' );
add_action( 'manage_comments_custom_column', 'output_comments_qq_columns', 10, 2 );
function add_comments_columns( $columns ){
    $columns[ 'new_field_qq' ] = __( 'QQ號' );        // 新增列名稱
    return $columns;
}
function output_comments_qq_columns( $column_name, $comment_id ){
    switch( $column_name ) {
		case "new_field_qq" :
		 // 這是輸出值,可以拿來在前端輸出,這里已經在鉤子manage_comments_custom_column上輸出了
		echo get_comment_meta( $comment_id, 'new_field_qq', true );
		break;
	}
}

add_filter( 'get_avatar', 'inlojv_change_avatar', 10, 3 );
function inlojv_change_avatar($avatar){
	global $comment;
	if( get_comment_meta( $comment->comment_ID, 'new_field_qq', true ) ){
		$qq_number =  get_comment_meta( $comment->comment_ID, 'new_field_qq', true );
		$qqavatar = file_get_contents('http://ptlogin2.qq.com/getface?appid=1006102&imgtype=3&uin='.$qq_number);
		preg_match('/http:(.*?)&t/',$qqavatar,$m); // 匹配 http: 和 &t 之間的字符串
		return '<img src="'.stripslashes($m[1]).'" class="avatar avatar-40 photo" width="40" height="40"  alt="qq_avatar" />';
	}else{
		return $avatar ;
	}	
}

3、此處代碼加入主題js文件中main.js或者comment.js:

// 初始化
$(function(){
	inlojv_js_getqqinfo();
});

// 設置cookie 
function setCookie(a,c){var b=30;var d=new Date();d.setTime(d.getTime()+b*24*60*60*1000);document.cookie=a+"="+escape(c)+";expires="+d.toGMTString()}
// 獲取cookie
function getCookie(b){var a,c=new RegExp("(^| )"+b+"=([^;]*)(;|$)");if(a=document.cookie.match(c)){return unescape(a[2])}else{return null}}

// 核心函數
function inlojv_js_getqqinfo(){
	// 獲取cookie
	if(getCookie('user_avatar') && getCookie('user_qq') ){
	
			$('div.comment-user-avatar img').attr('src',getCookie('user_avatar'));
			$('#yuao-comt-qq').val(getCookie('user_qq'));
	}

	$('#yuao-comt-qq').on('blur',function(){
		var qq=$('#yuao-comt-qq').val(); // 獲取訪客填在qq表單上的qq數字,其中#yuao-comt-qq表示QQ input標簽上的id,改成你自己的!	
		$('#yuao-comt-email').val($.trim(qq)+'@qq.com'); // 將獲取到的qq,改成qq郵箱填入郵箱表單,其中#yuao-comt-email表示郵箱input標簽上的id,改成你自己的!		
		// ajax方法獲取昵稱
		$.ajax({
			type: 'get',
			url:'http://www.btilnp.live/func_getqqinfo.php?type=getqqnickname&qq='+qq,  // func_getqqinfo.php是后端處理文件,注意路徑,127.0.0.1 改成你自己的域名
			dataType: 'jsonp',
			jsonp: 'callback',
			jsonpCallback: 'portraitCallBack',
			success: function(data) {
				// console.log(data);
				$('#yuao-comt-author').val(data[qq][6]);	// 將返回的qq昵稱填入到昵稱input表單上,其中#yuao-comt-author表示昵稱input標簽上的id,改成你自己的!
				//alert('已獲取昵稱!'); // 彈出警告
				setCookie('user_qq',qq);	// 設置cookie
			},
			error: function() {
				$('#yuao-comt-qq,#yuao-comt-author,#yuao-comt-email').val(''); // 如果獲取失敗則清空表單,注意input標簽上的id,改成你自己的!
				//alert('糟糕,昵稱獲取失敗!請重新填寫。'); // 彈出警告
				
			}
		});
		// 獲取頭像
		$.ajax({
			type: 'get',
			url: 'http://www.btilnp.live/func_getqqinfo.php?type=getqqavatar&qq='+qq, // func_getqqinfo.php是后端處理文件,注意路徑,127.0.0.1 改成你自己的域名!
			dataType: 'jsonp',
			jsonp: 'callback',
			jsonpCallback: 'qqavatarCallBack',
			success: function(data) {		
				$('div.comment-user-avatar img').attr('src',data[qq]);	// 將返回的qq頭像設置到你評論表單區域顯示頭像的節點上,div.comment-user-avatar img表示頭像節點img標簽,改成你自己的!
				//alert('已獲取頭像!'); // 彈出警告
				setCookie('user_avatar',data[qq]);	 // 設置cookie
			},
			error: function() {
				//alert('糟糕,獲取頭像失敗了!請重新填寫。'); // 彈出警告
				$('#yuao-comt-qq,#yuao-comt-author,#yuao-comt-email').val(''); // 清空表單
			}
		});
	});
}

其中紅色文字需要修改“http://www.btilnp.live”改成自己的域名,https的要改https,如果使用http調用會導致無法獲取昵稱的問題,郵箱可以正常獲取。

4、最后我們需要在前臺加入調用代碼,把主題文件comments.php的代碼改一下。

找到默認代碼:

<li class="form-inline"><label class="hide" for="author">昵稱</label><input class="ipt" type="text" name="author" id="author" value="<?php echo esc_attr($comment_author); ?>" tabindex="2" placeholder="昵稱"><span class="text-muted">昵稱 (必填)</span></li>
<li class="form-inline"><label class="hide" for="email">郵箱</label><input class="ipt" type="text" name="email" id="email" value="<?php echo esc_attr($comment_author_email); ?>" tabindex="3" placeholder="郵箱"><span class="text-muted">郵箱 (必填)</span></li>
<li class="form-inline"><label class="hide" for="url">網址</label><input class="ipt" type="text" name="url" id="url" value="<?php echo esc_attr($comment_author_url); ?>" tabindex="4" placeholder="網址"><span class="text-muted">網址</span></li>

改成:其中文字可以隨意修改。

<p class="comment-form-author"> <input id="yuao-comt-qq" maxlength="12" name="u" type="text" placeholder="輸入QQ號碼可以快速填寫" onblur="qiuye()" value="<?php echo esc_attr($comment_author); ?>" /> <label>QQ</label> </p> 
<p class="comment-form-author"> <input type="text" name="author" id="yuao-comt-author" class="commenttext" value="<?php echo esc_attr($comment_author); ?>" tabindex="1" /> <label for="author">昵稱(必填)</label> </p> 
<p class="comment-form-email"> <input type="text" name="email" id="yuao-comt-email" class="commenttext" value="<?php echo esc_attr($comment_author_email); ?>" tabindex="2" /> <label for="email">郵箱(必填)</label> </p> 
<p class="comment-form-url"> <input type="text" name="url" id="url" class="commenttext" value="<?php echo esc_attr($comment_author_url); ?>" tabindex="3" /> <label for="url">網址</label></p>

替換代碼,位置不要換,格式參數換了即可。

到此教程完美結束,快去給你的dux主題添加這個實用的功能吧。


歷史上的今天:
贊(56) 打賞
所有免費資源、福利、電影、破解軟件未經允許不得轉載:www.btilnp.live無作為 » DUX主題輸入QQ自動獲取昵稱郵箱

留下評論 8

  1. #6

    這個名字是亂的,我的QQ號名字是佛系軟件,但是顯示錕斤拷系錕斤拷錕斤拷

    錕斤拷系錕斤拷錕斤拷2個月前 (01-30)回復
  2. #5

    能獲取,能獲取,我調用到現在,發現這個地方需要https才可以,preg_match(‘/http:(.*?)&t/’,$qqavatar,$m); // 匹配 http: 和 &t 之間的字符串

    Mill Wan10個月前 (05-30)回復
  3. #4

    QQ頭像的api接口換了,所以無法獲取了,我也在找最新接口

    Mill Wan10個月前 (05-30)回復
  4. #3

    好厲害!謝謝老大!!!

    米之家 mizj.cn11個月前 (05-17)回復
  5. #2

    好用

    倆個亾哋圉湢11個月前 (05-17)回復
  6. #1

    很好,感謝博主分享。

    CanaryTheme11個月前 (05-16)回復

無作為-不僅僅是一種態度

登錄/注冊廣告合作

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

微信掃一掃打賞

广西风采快三