ecshop QQ,微博,淘宝,支付宝,四合一有后台utf8版(可选窗口登陆)
后台效果:
前台效果:
安装步骤:
1,下载下面的插件包,解压并复制覆盖进ecshop网站目录下
2,为后台左侧加入“第三方登陆插件管理”菜单
admin/includes/inc_menu.php 下面加入 链接
$modules['11_system']['connect'] = 'connect.php?act=list'; //第三方登陆
admin/includes/inc_priv.php 下面加入 权限
//第三方登陆 $purview['connect'] = 'connect';
languages/zh_cn/admin/common.php 下面加入 语言
$_LANG['connect'] = '第三方登录插件管理'; //第三方登陆
3,更新缓存后,刷新后台,在左侧栏找到“系统设置”里面的“第三方登录插件管理”打开后,初始化插件 一次(这个动作是为数据库中的user表增加一个aite_id字段来存放第三方登陆的用户特殊id,如:qq_3CD87DA70E82541DDD59B4F4CDC1D319)
4,在“第三方登录插件管理”上安装 QQ,微博,支付宝,淘宝,分别对应的填上你在各个开发平台申请到的id 、 key 、用户等级名称(QQ用户,微博用户,淘宝用户,支付宝用户)
5,“批量生成”提供弹窗登陆和4个登陆选择
6,前台添加登陆按钮:
1)修改根目录下的 user.php 搜索找到 $not_login_arr 在它里面加入 , 'oath', 'oath_login', 'other_login' 效果如下:
$not_login_arr = array('login','act_login','register','act_register','act_edit_password','get_password','send_pwd_email','password', 'signin', 'add_tag', 'collect', 'return_to_cart', 'logout', 'email_list', 'validate_email', 'send_hash_mail', 'order_query', 'is_registered', 'check_email','clear_history','qpassword_name', 'get_passwd_question', 'check_answer', 'oath', 'oath_login', 'other_login');
2)同时在user.php下面加入处理第三方登陆的方法
// 第三方登录接口 elseif($action == 'oath') { $type = empty($_REQUEST['type']) ? '' : $_REQUEST['type']; if($type == "taobao"){ header("location:api/connect/tb_index.php");exit; } include_once(ROOT_PATH . 'api/connect/connect.php'); $c = &connect($type); if($c) { if (empty($_REQUEST['callblock'])) { if (empty($_REQUEST['callblock']) && isset($GLOBALS['_SERVER']['HTTP_REFERER'])) { $back_act = strpos($GLOBALS['_SERVER']['HTTP_REFERER'], 'user.php') ? 'index.php' : $GLOBALS['_SERVER']['HTTP_REFERER']; } else { $back_act = 'index.php'; } } else { $back_act = trim($_REQUEST['callblock']); } if($back_act[4] != ':') $back_act = $ecs->url().$back_act; $open = empty($_REQUEST['open']) ? 0 : intval($_REQUEST['open']); $url = $c->login($ecs->url().'user.php?act=oath_login&type='.$type.'&callblock='.urlencode($back_act).'&open='.$open); if(!$url) { show_message( $c->get_error() , '首页', $ecs->url() , 'error'); } header('Location: '.$url); } else { show_message('服务器尚未注册该插件!' , '首页',$ecs->url() , 'error'); } } // 处理第三方登录接口 elseif($action == 'oath_login') { $type = empty($_REQUEST['type']) ? '' : $_REQUEST['type']; include_once(ROOT_PATH . 'api/connect/connect.php'); $c = &connect($type); if($c) { $access = $c->getAccessToken(); if(!$access) { show_message( $c->get_error() , '首页', $ecs->url() , 'error'); } $c->setAccessToken($access); $info = $c->getMessage(); if(!$info) { show_message($c->get_error() , '首页' , $ecs->url() , 'error' , false); } if(!$info['user_id']) show_message($c->get_error() , '首页' , $ecs->url() , 'error' , false); $info_user_id = $type .'_'.$info['user_id']; // 加个标识!!!防止 其他的标识 一样 // 以后的ID 标识 将以这种形式 辨认 $info['name'] = str_replace("'" , "" , $info['name']); // 过滤掉 逗号 不然出错 很难处理 不想去 搞什么编码的了 if(!$info['user_id']) show_message($c->get_error() , '首页' , $ecs->url() , 'error' , false); $sql = 'SELECT user_name,password,aite_id FROM '.$ecs->table('users').' WHERE aite_id = ''.$info_user_id.'' OR aite_id=''.$info['user_id'].'''; $count = $db->getRow($sql); if(!$count) // 没有当前数据 { if($user->check_user($info['name'])) // 重名处理 { $info['name'] = $info['name'].'_'.$type.(rand(10000,99999)); } $user_pass = $user->compile_password(array('password'=>$info['user_id'])); $sql = 'INSERT INTO '.$ecs->table('users').'(user_name , password, aite_id , sex , reg_time , user_rank , is_validated) VALUES '. "('$info[name]' , '$user_pass' , '$info_user_id' , '$info[sex]' , '".gmtime()."' , '$info[rank_id]' , '1')" ; $db->query($sql); } else { $sql = ''; if($count['aite_id'] == $info['user_id']) { $sql = 'UPDATE '.$ecs->table('users')." SET aite_id = '$info_user_id' WHERE aite_id = '$count[aite_id]'"; $db->query($sql); } if($info['name'] != $count['user_name']) // 这段可删除 { if($user->check_user($info['name'])) // 重名处理 { $info['name'] = $info['name'].'_'.$type.(rand()*1000); } $sql = 'UPDATE '.$ecs->table('users')." SET user_name = '$info[name]' WHERE aite_id = '$info_user_id'"; $db->query($sql); } } $user->set_session($info['name']); $user->set_cookie($info['name']); update_user_info(); recalculate_price(); if(!empty($_REQUEST['open'])) { die('<script>window.opener.window.location.reload(); window.close();</script>'); } else { ecs_header('Location: '.$_REQUEST['callblock']); } } } // 处理其它登录接口 elseif($action == 'other_login') { $type = empty($_REQUEST['type']) ? '' : $_REQUEST['type']; session_start(); $info = $_SESSION['user_info']; if(empty($info)){ show_message("非法访问或请求超时!" , '首页' , $ecs->url() , 'error' , false); } if(!$info['user_id']) show_message("非法访问或访问出错,请联系管理员!", '首页' , $ecs->url() , 'error' , false); $info_user_id = $type .'_'.$info['user_id']; // 加个标识!!!防止 其他的标识 一样 // 以后的ID 标识 将以这种形式 辨认 $info['name'] = str_replace("'" , "" , $info['name']); // 过滤掉 逗号 不然出错 很难处理 不想去 搞什么编码的了 $sql = 'SELECT user_name,password,aite_id FROM '.$ecs->table('users').' WHERE aite_id = ''.$info_user_id.'' OR aite_id=''.$info['user_id'].'''; $count = $db->getRow($sql); $login_name = $info['name']; if(!$count) // 没有当前数据 { if($user->check_user($info['name'])) // 重名处理 { $info['name'] = $info['name'].'_'.$type.(rand()*1000); } $login_name = $info['name']; $user_pass = $user->compile_password(array('password'=>$info['user_id'])); $sql = 'INSERT INTO '.$ecs->table('users').'(user_name , password, aite_id , sex , reg_time , user_rank , is_validated) VALUES '. "('$info[name]' , '$user_pass' , '$info_user_id' , '$info[sex]' , '".gmtime()."' , '$info[rank_id]' , '1')" ; $db->query($sql); } else { $login_name = $count['user_name']; $sql = ''; if($count['aite_id'] == $info['user_id']) { $sql = 'UPDATE '.$ecs->table('users')." SET aite_id = '$info_user_id' WHERE aite_id = '$count[aite_id]'"; $db->query($sql); } } $user->set_session($login_name); $user->set_cookie($login_name); update_user_info(); recalculate_price(); $redirect_url = "http://".$_SERVER["HTTP_HOST"].str_replace("user.php", "index.php", $_SERVER["REQUEST_URI"]); header('Location: '.$redirect_url); }
3)在模板文件里面加入登陆按钮(这里以官方默认模板做例子)
先在后台“第三方登录插件管理”勾选需要开启的第三方登陆,选择“批量生成”,
复制 生成后的代码 到你的模板需要登陆的地方中粘贴,比如 登陆和注册页面
themesdefaultuser_passport.dwt 找到
<tr> <td> </td> <td align="left"> <input type="hidden" name="act" value="act_login" /> <input type="hidden" name="back_act" value="{$back_act}" /> <input type="submit" name="submit" value="" class="us_Submit" /> </td> </tr>
在它的下面加入 后台生成的代码,如下:
插件下载:
[fo_hide]ecshop第三方登陆-QQ微博淘宝支付宝--四合一有后台版-UTF-8(可选窗口登陆).zip 密码: sth0[/fo_hide]
End!
作者:z1988
链接:https://www.z1988.com/325.html
文章版权归作者所有,未经允许请勿转载。