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>&nbsp;</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!

阅读剩余
THE END