$value) { $attach_param .= "&{$key}={$value}"; $attach_items .= " " . PHP_EOL; } if (empty($redirect_uri)) $redirect_uri = rawurlencode(getLocaleUrl()); if (empty($error_uri)) $error_uri = rawurlencode(dirname(getLocaleUrl()) . '/error.php'); $data = array( 'market_key' => $market_key, 'logintype' => $login_type, ); $result = json_decode(rawurldecode(SendPost(SITE_API2_DOMAIN . '/api/login/querylist', $data))); if (empty($result)) /// 为空表示没有获取到任何登录方式 { $html = << alert('找不到支援的任何登录方式, 请联系相关管理员!'); EOL; } else /// 正常 { $third_array = array(); /// 三方认证方式(不需要输入账号密码的方式) $owner_array = array(); /// 本地认证方式(需要输入账号密码的方式) foreach ($result as $item) { $item = (array)$item; if (0 != $item['is_third']) /// 三方认证方式 array_push($third_array, $item); else /// 本地认证方式 array_push($owner_array, $item); } $third_count = count($third_array); $owner_count = count($owner_array); $third_html = ''; $owner_html = ''; $splitter = ''; $forms = ''; if (0 == $owner_count && 1 == $third_count) /// 只存在一种三方的校验方式则直接跳转到目标连接 { $url = $third_array[0]['url'] . "?appid={$app_id}&devkey={$dev_key}&scode={$scode}&market_key={$market_key}&target={$redirect_uri}&fail_target={$error_uri}{$attach_param}"; header("Location: {$url}"); exit; } /// 如果两种方式都有,则需要分隔元素。 if (0 != $owner_count && 0 != $third_count) $splitter = <<
更多登录方式
EOL; if (0 != $owner_count) /// 如果本地验证方式不为空则需要用于输入账号密码的表单元素。 { $owner_html = '
' . PHP_EOL; $forms = ''; $index = 0; foreach ($owner_array as $owner) { $index++; /// 用来提交数据的表单 $forms .= <<
' . PHP_EOL; } if (0 != $third_count) { $third_html = '
' . PHP_EOL; $index = 0; foreach ($third_array as $third) { $index++; $url = $third['url'] . "?appid={$app_id}&devkey={$dev_key}&scode={$scode}&market_key={$market_key}&target={$redirect_uri}&fail_target={$error_uri}{$attach_param}"; $third_html .= << EOL; } } $html = $owner_html . $splitter . $third_html; } ?>