已经在ECShop_V2.7.3_UTF8测试,可以登陆。
一、把qq.php放置站点根目录下,
二、在登陆页面添加QQ登陆图标
qq.php 程序源码:
<?php
/****
* QQ互联 OAuth 2.0
* 作者:半条虫(466814195)
* 日期:2014/4/16
* 发行:EtSoftWare
* 网址: http://connect.qq.com/
*/
define('IN_ECS', true);
require(dirname(__FILE__) . '/includes/init.php');
include_once(ROOT_PATH . 'includes/lib_transaction.php');
include_once(ROOT_PATH . 'includes/lib_passport.php');
require_once('OAuth/QQ.class.php');
$conf=array(
'app_id' => '10105**22',/*应用的唯一标识*/
'app_key' => 'fbebb333a8e5e****8aea364664615',/*appid对应的密钥*/
);
$qOAuth = OAuth\QQOAuth::getInstance($conf);
/*
<remark>检测用户是否存在</remark>
*/
function check_user($username){
$sql = "SELECT user_id FROM " . $GLOBALS['ecs']->table("users"). " WHERE user_name='$username'";
$row = $GLOBALS['db']->getRow($sql);
if (!empty($row)){ return true; }else{return false;}
}
/*
<remark>注册用户</remark>
*/
function qq_register($qOAuth){
$userInfo = $qOAuth->get_user_info();
$userInfo = json_decode($userInfo);
if($userInfo->ret!=0){
exit("登录发生错误".$userInfo->msg);
} else {
$username='qq'.$qOAuth->openId;
$usernickname =$userInfo->nickname;
$userico =$userInfo->figureurl_qq_1;
$password=time();//随便弄个密码
$email=$qOAuth->openId.'@qq.com';//没有返回邮箱
$back_act ="user.php";
/* 检测用户名 */
if (check_user($username)!==false){//账号存在直接完成登录
$GLOBALS['user']->set_session($username);
$GLOBALS['user']->set_cookie($username);
$GLOBALS['user']->set_session($usernickname);
$GLOBALS['user']->set_cookie($usernickname);
$GLOBALS['user']->set_session($userico);
$GLOBALS['user']->set_cookie($userico);
header("Location: user.php\n");
exit;
}else{//账号不存在就完成注册并自动登录
$reg_date = time();
$password =md5($password);
$GLOBALS['db']->query('INSERT INTO ' . $GLOBALS['ecs']->table("users") . "(`email`, `user_name`,`user_nickname`,`user_ico`, `password`, `reg_time`, `last_login`, `last_ip`) VALUES ('$email', '$username','$usernickname','$userico', '$password', '$reg_date', '$reg_date', '$ip')");//账号不存在 就写入数据库 并登陆
$GLOBALS['user']->set_session($username);
$GLOBALS['user']->set_cookie($username);
header("Location: user.php\n");
exit;
}
//$userInfo->figureurl'
}
}
qq_register($qOAuth);
?>
为了符合QQ OAuth2.0做出的要求通过审核,可以对相关信息做修改
添加字段
ALTER TABLE `sp_users` ADD `user_nickname` VARCHAR(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `user_name`, ADD `user_ico` VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `user_nickname`;
更新数据
UPDATE `sp_users` SET `user_nickname`=`user_name`
includes\modules\intergrates\intergrate.php 607
$sql = "SELECT user_id,user_nickname,user_ico,password, email FROM " . $GLOBALS['ecs']->table('users') . " WHERE user_name='$username' LIMIT 1";
includes\modules\intergrates\intergrate.php 614
$_SESSION['user_name'] = $username;
$_SESSION['user_nickname'] = $row['user_nickname'];
$_SESSION['user_ico'] = $row['user_ico'];
includes\lib_main.php 121
$sql = 'SELECT u.user_id,u.user_nickname,u.user_ico,u.email, u.user_name, u.user_money, u.pay_points'.
includes\lib_main.php 127
$user['username'] = $user['user_name'];
$user['usernickname'] = $user['user_nickname'];
一、把qq.php放置站点根目录下,
二、在登陆页面添加QQ登陆图标
qq.php 程序源码:
<?php
/****
* QQ互联 OAuth 2.0
* 作者:半条虫(466814195)
* 日期:2014/4/16
* 发行:EtSoftWare
* 网址: http://connect.qq.com/
*/
define('IN_ECS', true);
require(dirname(__FILE__) . '/includes/init.php');
include_once(ROOT_PATH . 'includes/lib_transaction.php');
include_once(ROOT_PATH . 'includes/lib_passport.php');
require_once('OAuth/QQ.class.php');
$conf=array(
'app_id' => '10105**22',/*应用的唯一标识*/
'app_key' => 'fbebb333a8e5e****8aea364664615',/*appid对应的密钥*/
);
$qOAuth = OAuth\QQOAuth::getInstance($conf);
/*
<remark>检测用户是否存在</remark>
*/
function check_user($username){
$sql = "SELECT user_id FROM " . $GLOBALS['ecs']->table("users"). " WHERE user_name='$username'";
$row = $GLOBALS['db']->getRow($sql);
if (!empty($row)){ return true; }else{return false;}
}
/*
<remark>注册用户</remark>
*/
function qq_register($qOAuth){
$userInfo = $qOAuth->get_user_info();
$userInfo = json_decode($userInfo);
if($userInfo->ret!=0){
exit("登录发生错误".$userInfo->msg);
} else {
$username='qq'.$qOAuth->openId;
$usernickname =$userInfo->nickname;
$userico =$userInfo->figureurl_qq_1;
$password=time();//随便弄个密码
$email=$qOAuth->openId.'@qq.com';//没有返回邮箱
$back_act ="user.php";
/* 检测用户名 */
if (check_user($username)!==false){//账号存在直接完成登录
$GLOBALS['user']->set_session($username);
$GLOBALS['user']->set_cookie($username);
$GLOBALS['user']->set_session($usernickname);
$GLOBALS['user']->set_cookie($usernickname);
$GLOBALS['user']->set_session($userico);
$GLOBALS['user']->set_cookie($userico);
header("Location: user.php\n");
exit;
}else{//账号不存在就完成注册并自动登录
$reg_date = time();
$password =md5($password);
$GLOBALS['db']->query('INSERT INTO ' . $GLOBALS['ecs']->table("users") . "(`email`, `user_name`,`user_nickname`,`user_ico`, `password`, `reg_time`, `last_login`, `last_ip`) VALUES ('$email', '$username','$usernickname','$userico', '$password', '$reg_date', '$reg_date', '$ip')");//账号不存在 就写入数据库 并登陆
$GLOBALS['user']->set_session($username);
$GLOBALS['user']->set_cookie($username);
header("Location: user.php\n");
exit;
}
//$userInfo->figureurl'
}
}
qq_register($qOAuth);
?>
为了符合QQ OAuth2.0做出的要求通过审核,可以对相关信息做修改
添加字段
ALTER TABLE `sp_users` ADD `user_nickname` VARCHAR(60) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `user_name`, ADD `user_ico` VARCHAR(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL AFTER `user_nickname`;
更新数据
UPDATE `sp_users` SET `user_nickname`=`user_name`
includes\modules\intergrates\intergrate.php 607
$sql = "SELECT user_id,user_nickname,user_ico,password, email FROM " . $GLOBALS['ecs']->table('users') . " WHERE user_name='$username' LIMIT 1";
includes\modules\intergrates\intergrate.php 614
$_SESSION['user_name'] = $username;
$_SESSION['user_nickname'] = $row['user_nickname'];
$_SESSION['user_ico'] = $row['user_ico'];
includes\lib_main.php 121
$sql = 'SELECT u.user_id,u.user_nickname,u.user_ico,u.email, u.user_name, u.user_money, u.pay_points'.
includes\lib_main.php 127
$user['username'] = $user['user_name'];
$user['usernickname'] = $user['user_nickname'];
$user['userico'] = $user['user_ico'];