connect.php 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  1. <?php
  2. /**
  3. * QQ互联登录
  4. *
  5. *
  6. ***/
  7. defined('InShopNC') or exit('Access Invalid!');
  8. class connectControl extends BaseHomeControl{
  9. public function __construct(){
  10. parent::__construct();
  11. Language::read("home_login_register,home_login_index,home_qqconnect");
  12. /**
  13. * 判断qq互联功能是否开启
  14. */
  15. if (C('qq_isuse') != 1){
  16. showMessage(Language::get('home_qqconnect_unavailable'),'index.php','html','error');//'系统未开启QQ互联功能'
  17. }
  18. /**
  19. * 初始化测试数据
  20. */
  21. if (!$_SESSION['openid']){
  22. showMessage(Language::get('home_qqconnect_error'),'index.php','html','error');//'系统错误'
  23. }
  24. Tpl::output('hidden_nctoolbar', 1);
  25. }
  26. /**
  27. * 首页
  28. */
  29. public function indexOp(){
  30. /**
  31. * 检查登录状态
  32. */
  33. if($_SESSION['is_login'] == '1') {
  34. //qq绑定
  35. $this->bindqqOp();
  36. }else {
  37. $this->autologin();
  38. $this->registerOp();
  39. }
  40. }
  41. /**
  42. * qq绑定新用户
  43. */
  44. public function registerOp(){
  45. //实例化模型
  46. $model_member = Model('member');
  47. if (chksubmit()){
  48. $update_info = array();
  49. $update_info['member_passwd']= md5(trim($_POST["password"]));
  50. if(!empty($_POST["email"])) {
  51. $update_info['member_email']= $_POST["email"];
  52. $_SESSION['member_email']= $_POST["email"];
  53. }
  54. $model_member->editMember(array('member_id'=>$_SESSION['member_id']),$update_info);
  55. showMessage(Language::get('nc_common_save_succ'),SHOP_SITE_URL);
  56. }else {
  57. //检查登录状态
  58. $model_member->checkloginMember();
  59. //获取qq账号信息
  60. require_once (BASE_PATH.'/api/qq/user/get_user_info.php');
  61. $qquser_info = get_user_info($_SESSION["appid"], $_SESSION["appkey"], $_SESSION["token"], $_SESSION["secret"], $_SESSION["openid"]);
  62. Tpl::output('qquser_info',$qquser_info);
  63. //处理qq账号信息
  64. $qquser_info['nickname'] = trim($qquser_info['nickname']);
  65. $user_passwd = rand(100000, 999999);
  66. /**
  67. * 会员添加
  68. */
  69. $user_array = array();
  70. $user_array['member_name'] = $qquser_info['nickname'];
  71. $user_array['member_passwd'] = $user_passwd;
  72. $user_array['member_email'] = '';
  73. $user_array['member_qqopenid'] = $_SESSION['openid'];//qq openid
  74. $user_array['member_qqinfo'] = serialize($qquser_info);//qq 信息
  75. $rand = rand(100, 899);
  76. if(strlen($user_array['member_name']) < 3) $user_array['member_name'] = $qquser_info['nickname'].$rand;
  77. $check_member_name = $model_member->getMemberInfo(array('member_name'=>trim($user_array['member_name'])));
  78. $result = 0;
  79. if(empty($check_member_name)) {
  80. $result = $model_member->addMember($user_array);
  81. }else {
  82. $user_array['member_name'] = trim($qquser_info['nickname']).$rand;
  83. $check_member_name = $model_member->getMemberInfo(array('member_name'=>trim($user_array['member_name'])));
  84. if(empty($check_member_name)) {
  85. $result = $model_member->addMember($user_array);
  86. }else {
  87. for ($i = 1;$i < 999999;$i++) {
  88. $rand = $rand+$i;
  89. $user_array['member_name'] = trim($qquser_info['nickname']).$rand;
  90. $check_member_name = $model_member->getMemberInfo(array('member_name'=>trim($user_array['member_name'])));
  91. if(empty($check_member_name)) {
  92. $result = $model_member->addMember($user_array);
  93. break;
  94. }
  95. }
  96. }
  97. }
  98. if($result) {
  99. Tpl::output('user_passwd',$user_passwd);
  100. $avatar = @copy($qquser_info['figureurl_qq_2'],BASE_UPLOAD_PATH.'/'.ATTACH_AVATAR."/avatar_$result.jpg");
  101. $update_info = array();
  102. if($avatar) {
  103. $update_info['member_avatar'] = "avatar_$result.jpg";
  104. $model_member->editMember(array('member_id'=>$result),$update_info);
  105. $user_array['member_avatar'] = "avatar_$result.jpg";
  106. }
  107. $user_array['member_id'] = $result;
  108. $model_member->createSession($user_array);
  109. Tpl::showpage('connect_register');
  110. } else {
  111. showMessage(Language::get('login_usersave_regist_fail'),SHOP_SITE_URL.'/index.php?act=login&op=register','html','error');//"会员注册失败"
  112. }
  113. }
  114. }
  115. /**
  116. * 已有用户绑定QQ
  117. */
  118. public function bindqqOp(){
  119. $model_member = Model('member');
  120. //验证QQ账号用户是否已经存在
  121. $array = array();
  122. $array['member_qqopenid'] = $_SESSION['openid'];
  123. $member_info = $model_member->getMemberInfo($array);
  124. if (is_array($member_info) && count($member_info)>0){
  125. unset($_SESSION['openid']);
  126. showMessage(Language::get('home_qqconnect_binding_exist'),'index.php?act=member_connect&op=qqbind','html','error');//'该QQ账号已经绑定其他商城账号,请使用其他QQ账号与本账号绑定'
  127. }
  128. //获取qq账号信息
  129. require_once (BASE_PATH.'/api/qq/user/get_user_info.php');
  130. $qquser_info = get_user_info($_SESSION["appid"], $_SESSION["appkey"], $_SESSION["token"], $_SESSION["secret"], $_SESSION["openid"]);
  131. $edit_state = $model_member->editMember(array('member_id'=>$_SESSION['member_id']), array('member_qqopenid'=>$_SESSION['openid'], 'member_qqinfo'=>serialize($qquser_info)));
  132. if ($edit_state){
  133. showMessage(Language::get('home_qqconnect_binding_success'),'index.php?act=member_connect&op=qqbind');
  134. }else {
  135. showMessage(Language::get('home_qqconnect_binding_fail'),'index.php?act=member_connect&op=qqbind','html','error');//'绑定QQ失败'
  136. }
  137. }
  138. /**
  139. * 绑定qq后自动登录
  140. */
  141. public function autologin(){
  142. //查询是否已经绑定该qq,已经绑定则直接跳转
  143. $model_member = Model('member');
  144. $array = array();
  145. $array['member_qqopenid'] = $_SESSION['openid'];
  146. $member_info = $model_member->getMemberInfo($array);
  147. if (is_array($member_info) && count($member_info)>0){
  148. if(!$member_info['member_state']){//1为启用 0 为禁用
  149. showMessage(Language::get('nc_notallowed_login'),'','html','error');
  150. }
  151. $model_member->createSession($member_info);
  152. $success_message = Language::get('login_index_login_success');
  153. showMessage($success_message,SHOP_SITE_URL);
  154. }
  155. }
  156. /**
  157. * 更换绑定QQ号码
  158. */
  159. public function changeqqOp(){
  160. //如果用户已经登录,进入此链接则显示错误
  161. if($_SESSION['is_login'] == '1') {
  162. showMessage(Language::get('home_qqconnect_error'),'index.php','html','error');//'系统错误'
  163. }
  164. unset($_SESSION['openid']);
  165. @header('Location:'.SHOP_SITE_URL.'/api.php?act=toqq');
  166. exit;
  167. }
  168. }