common.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701
  1. <?php
  2. use think\Env;
  3. if(!function_exists('GetIP')) {
  4. // 取得当前IP
  5. function GetIP($type=0){
  6. if(!empty($_SERVER["HTTP_CLIENT_IP"])) {
  7. $cip = $_SERVER["HTTP_CLIENT_IP"];
  8. } else if(!empty($_SERVER["HTTP_X_FORWARDED_FOR"])) {
  9. $cip = $_SERVER["HTTP_X_FORWARDED_FOR"];
  10. } else if(!empty($_SERVER["REMOTE_ADDR"])) {
  11. $cip = $_SERVER["REMOTE_ADDR"];
  12. } else {
  13. $cip = "";
  14. }
  15. preg_match("/[\d\.]{7,15}/", $cip, $cips);
  16. $cip = $cips[0] ? $cips[0] : 'unknown';
  17. unset($cips);
  18. if ($type==1) $cip = myip2long($cip);
  19. return $cip;
  20. }
  21. }
  22. if(!function_exists('myip2long')) {
  23. //转换IP
  24. function myip2long($ip){
  25. // $ip_arr = split('\.',$ip);
  26. $ip_arr = explode('.', $ip);
  27. $iplong = (16777216 * intval($ip_arr[0])) + (65536 * intval($ip_arr[1])) + (256 * intval($ip_arr[2])) + intval($ip_arr[3]);
  28. $iplong = sprintf("%u",$iplong);
  29. return $iplong;
  30. }
  31. }
  32. /**
  33. * 根据user_agent判断使用的设备类型
  34. * @return int
  35. */
  36. function getDevice(){
  37. //判断终端是手机(iphone,ipad,android)还是电脑访问网站
  38. $user_agent = strtolower($_SERVER['HTTP_USER_AGENT']);
  39. if(strpos($user_agent, 'windows nt')) { // 使用pc
  40. return 1;
  41. }
  42. if(strpos($user_agent, 'iphone')) {
  43. return 3;
  44. }
  45. if(strpos($user_agent, 'ipad')) {
  46. return 3;
  47. }
  48. if(strpos($user_agent, 'android')) {
  49. return 2;
  50. }
  51. }
  52. /**
  53. * 账号密码加解密
  54. */
  55. if(!function_exists('auth_code')) {
  56. function auth_code($string, $operation = 'DECODE', $key = '', $expiry = 0) {
  57. $ckey_length = 0;
  58. $key = md5($key ? $key : Env::get('auth_key') );
  59. $keya = md5(substr($key, 0, 16));
  60. $keyb = md5(substr($key, 16, 16));
  61. $keyc = $ckey_length ? ($operation == 'DECODE' ? substr($string, 0, $ckey_length): substr(md5(microtime()), -$ckey_length)) : '';
  62. $cryptkey = $keya.md5($keya.$keyc);
  63. $key_length = strlen($cryptkey);
  64. $string = $operation == 'DECODE' ? base64_decode(substr($string, $ckey_length)) : sprintf('%010d', $expiry ? $expiry + time() : 0).substr(md5($string.$keyb), 0, 16).$string;
  65. $string_length = strlen($string);
  66. $result = '';
  67. $box = range(0, 255);
  68. // $box = 100;
  69. $rndkey = array();
  70. for($i = 0; $i <= 255; $i++) {
  71. $rndkey[$i] = ord($cryptkey[$i % $key_length]);
  72. }
  73. for($j = $i = 0; $i < 256; $i++) {
  74. $j = ($j + $box[$i] + $rndkey[$i]) % 256;
  75. $tmp = $box[$i];
  76. $box[$i] = $box[$j];
  77. $box[$j] = $tmp;
  78. }
  79. for($a = $j = $i = 0; $i < $string_length; $i++) {
  80. $a = ($a + 1) % 256;
  81. $j = ($j + $box[$a]) % 256;
  82. $tmp = $box[$a];
  83. $box[$a] = $box[$j];
  84. $box[$j] = $tmp;
  85. $result .= chr(ord($string[$i]) ^ ($box[($box[$a] + $box[$j]) % 256]));
  86. }
  87. if($operation == 'DECODE') {
  88. if((substr($result, 0, 10) == 0 || substr($result, 0, 10) - time() > 0) && substr($result, 10, 16) == substr(md5(substr($result, 26).$keyb), 0, 16)) {
  89. return substr($result, 26);
  90. } else {
  91. return '';
  92. }
  93. } else {
  94. return $keyc.str_replace('=', '', base64_encode($result));
  95. }
  96. }
  97. }
  98. /**
  99. * 获取游戏icon, 没有图片时,给个默认icon
  100. * @param $url
  101. * @return string
  102. */
  103. function getGameIcon($url,$use_small_icon=1){
  104. if ( empty($url) ) {
  105. return '/static/images/aoyou_game.png';
  106. }
  107. $smallIconExt = '?x-image-process=style/small';
  108. if ( strpos($url, 'platform/') === 0 || strpos($url, 'image/') === 0 ) {
  109. if(substr(STATIC_DOMAIN,-1)=='/' && substr($url,0,1)=='/'){
  110. return $use_small_icon?STATIC_DOMAIN.'/'.$url.$smallIconExt:STATIC_DOMAIN.'/'.$url;
  111. }
  112. else if(substr(STATIC_DOMAIN,-1)<>'/' && substr($url,0,1)<>'/'){
  113. return $use_small_icon?substr(STATIC_DOMAIN,0,strlen(STATIC_DOMAIN)-1).$url.$smallIconExt:substr(STATIC_DOMAIN,0,strlen(STATIC_DOMAIN)-1).$url;
  114. }
  115. else{
  116. return $use_small_icon?STATIC_DOMAIN.$url.$smallIconExt:STATIC_DOMAIN.$url;
  117. }
  118. return $use_small_icon?STATIC_DOMAIN.'/'.$url.$smallIconExt:STATIC_DOMAIN.'/'.$url;
  119. }
  120. if(substr(STATIC_DOMAIN,-1)=='/'){
  121. return $use_small_icon?STATIC_DOMAIN.'image/'.$url.$smallIconExt:STATIC_DOMAIN.'image/'.$url;
  122. }
  123. else{
  124. return $use_small_icon?STATIC_DOMAIN.'/image/'.$url.$smallIconExt:STATIC_DOMAIN.'/image/'.$url;
  125. }
  126. }
  127. function getGameUrl($id,$type=1) {
  128. if(intval($id)){
  129. if ($type == 1) return WEBSITE_DOMAIN.'/game'.$id.'.html';
  130. if ($type == 2) return MOBILE_SITE_DOMAIN.'/game'.$id.'.html';
  131. // return url('game/info',array('id'=>$id));
  132. }
  133. else{
  134. return '';
  135. }
  136. }
  137. function getGameNewsUrl($id) {
  138. if(intval($id)){
  139. return WEBSITE_DOMAIN.'/game'.$id.'/news/';
  140. // return url('game/news',array('id'=>$id));
  141. }
  142. else{
  143. return '';
  144. }
  145. }
  146. function getGameGiftUrl($id) {
  147. if(intval($id)){
  148. return WEBSITE_DOMAIN.'/game'.$id.'/gift/';
  149. // return url('game/gift',array('id'=>$id));
  150. }
  151. else{
  152. return '';
  153. }
  154. }
  155. function getGameServerUrl($id) {
  156. if(intval($id)){
  157. return WEBSITE_DOMAIN.'/game'.$id.'/kfkc/';
  158. // return url('game/server',array('id'=>$id));
  159. }
  160. else{
  161. return '';
  162. }
  163. }
  164. function getGameIndex() {
  165. return WEBSITE_DOMAIN.'/game/';
  166. // return url('game/index','',false);
  167. }
  168. // 开服开测
  169. function getServerUrl($type) {
  170. // 开服
  171. if ( $type == 'kf') {
  172. return WEBSITE_DOMAIN.'/kf/';
  173. }
  174. // 开测
  175. if ( $type == 'kc') {
  176. return WEBSITE_DOMAIN.'/kc/';
  177. }
  178. return '';
  179. }
  180. // 首页
  181. function getIndex(){
  182. return WEBSITE_DOMAIN;
  183. }
  184. // 其他地址
  185. function getOtherUrl($action){
  186. return WEBSITE_DOMAIN.'/'.$action.'.html';
  187. }
  188. function getNewsImage($image) {
  189. if(!$image) {
  190. return '/static/images/icon/990-625.png';
  191. } else {
  192. if ( strpos($image, 'platform/') === 0 || strpos($image, 'image/') === 0) {
  193. if(substr(STATIC_DOMAIN,-1)=='/' && substr($image,0,1)=='/'){
  194. return STATIC_DOMAIN.'/'.$image;
  195. }
  196. else if(substr(STATIC_DOMAIN,-1)<>'/' && substr($image,0,1)<>'/'){
  197. return substr(STATIC_DOMAIN,0,strlen(STATIC_DOMAIN)-1).$image;
  198. }
  199. else{
  200. return STATIC_DOMAIN.$image;
  201. }
  202. }
  203. if(substr(STATIC_DOMAIN,-1)=='/'){
  204. return STATIC_DOMAIN.'image/'.$image;
  205. }
  206. else{
  207. return STATIC_DOMAIN.'/image/'.$image;
  208. }
  209. }
  210. }
  211. function getNewsIndexUrl($type='') {
  212. if($type==1){
  213. return WEBSITE_DOMAIN.'/news/xyzx/';
  214. // return url('news/index',array('type'=>$type));
  215. }
  216. else if($type==2){
  217. return WEBSITE_DOMAIN.'/news/lyzx/';
  218. // return url('news/index',array('type'=>$type));
  219. }
  220. else if($type==3){
  221. return WEBSITE_DOMAIN.'/news/xypc/';
  222. // return url('news/index',array('type'=>$type));
  223. }
  224. else if($type==4){
  225. return WEBSITE_DOMAIN.'/news/xygl/';
  226. // return url('news/index',array('type'=>$type));
  227. }
  228. else if($type==5){
  229. return WEBSITE_DOMAIN.'/news/jcsp/';
  230. // return url('news/index',array('type'=>$type));
  231. }
  232. else {
  233. return WEBSITE_DOMAIN.'/news/';
  234. // return url('news/index');
  235. }
  236. }
  237. function getNewsUrl($id,$redirecturl='') {
  238. if ( empty($redirecturl) ) {
  239. // return url('news/detail',array('id'=>$id));
  240. return WEBSITE_DOMAIN.'/news/'.$id.'.html';
  241. } else {
  242. return $redirecturl;
  243. }
  244. }
  245. function getCutcontent($content) {
  246. $cutcontent = mb_substr(str_replace("  ", '', strip_tags($content)),0,80,'UTF-8') ."...";
  247. return $cutcontent;
  248. }
  249. /**
  250. * 获取游戏大小
  251. * @return string
  252. */
  253. function getSize($game) {
  254. return '未知';
  255. // 苍穹变、五行天手游 游戏大小做特殊处理
  256. if($game['id'] == 231){
  257. return "293.01M";
  258. }elseif ($game['id'] == 784){
  259. return "302.63M";
  260. }
  261. if(!isset($game['platform'])){
  262. $game['platform'] = 0;
  263. }
  264. if($game['pinyin']){
  265. $size = model('Game')->getApkInfo( $game['androidurl'], $game['pinyin'], 'size', $game['platform']);
  266. }
  267. else{
  268. $size = '';
  269. }
  270. return $size ? $size : '未知';
  271. }
  272. /**
  273. * 获取游戏版本
  274. * @return string
  275. */
  276. function getVersion($game) {
  277. // 苍穹变、五行天手游 游戏版本做特殊处理
  278. if($game['id'] == 231){
  279. return "5.0.0";
  280. }elseif ($game['id'] == 784){
  281. return "1.9.1";
  282. }
  283. if(!isset($game['platform'])){
  284. $game['platform'] = 0;
  285. }
  286. $version = model('Game')->getApkInfo( $game['androidurl'], $game['pinyin'], 'version', $game['platform']);
  287. return $version ? $version : '未知';
  288. }
  289. /**
  290. * 获取游戏更新时间
  291. * @return string
  292. */
  293. function getUpdateTime($game) {
  294. // 苍穹变、五行天手游 发布时间做特殊处理
  295. if($game['id'] == 231){
  296. return "2016-09-01";
  297. }elseif ($game['id'] == 784){
  298. return "2017-03-25";
  299. }
  300. if(!isset($game['platform'])){
  301. $game['platform'] = 0;
  302. }
  303. $updtime = model('Game')->getApkInfo( $game['androidurl'], $game['pinyin'], 'updtime', $game['platform']);
  304. return $updtime ? $updtime : '未知';
  305. }
  306. /**
  307. * 获取游戏下载地址
  308. * @return string
  309. */
  310. function getDownload($game) {
  311. // 游戏的下载链接做特殊处理
  312. $gameInfo = model('Game')->field('id,name,nickname,game_kind,is_default,download_url')->where(['id'=>$game['id']])->find();
  313. if($gameInfo['download_url']){
  314. return $gameInfo['download_url'];
  315. }
  316. if ($game['filename']) {
  317. return APK_DOWN_DOMAIN.'/sygame/'.$game['pinyin'].'/'.$game['filename'];
  318. } else {
  319. return '';
  320. }
  321. }
  322. /**
  323. * 获取游戏截图
  324. * @return array
  325. */
  326. function getScreenShot($image) {
  327. if ( empty($image) ) {
  328. return array();
  329. }
  330. $screenShot = explode(';', $image);
  331. foreach ($screenShot as $key => $value) {
  332. $screenShot[$key] = getGameIcon($value,0);
  333. }
  334. return $screenShot;
  335. }
  336. /**
  337. * 获取游戏类型
  338. * @return string
  339. */
  340. function getTypename($p_type_name='') {
  341. return $p_type_name ? $p_type_name : '未知';
  342. }
  343. /**
  344. * 获取游戏题材
  345. * @return string
  346. */
  347. function getSubjectname($p_subject_name='') {
  348. return $p_subject_name ? $p_subject_name : '未知';
  349. }
  350. /**
  351. * 获取开发厂商
  352. * @return string
  353. */
  354. function getDeveloper($p_developer='') {
  355. return $p_developer ? $p_developer : '未知';
  356. }
  357. function __getUrlContent($url, $post_fields=array()) {
  358. $curl_handler = curl_init();
  359. curl_setopt($curl_handler, CURLOPT_URL, $url);
  360. curl_setopt($curl_handler, CURLOPT_HEADER, 0);
  361. curl_setopt($curl_handler, CURLOPT_RETURNTRANSFER, 1);
  362. curl_setopt($curl_handler, CURLOPT_TIMEOUT, 60);
  363. if ( ! empty($post_fields) ) {
  364. curl_setopt($curl_handler, CURLOPT_POST, 1);
  365. curl_setopt($curl_handler, CURLOPT_POSTFIELDS, json_encode($post_fields));
  366. }
  367. $response = curl_exec($curl_handler);
  368. curl_close($curl_handler);
  369. return $response;
  370. }
  371. /**
  372. * 腾讯滑块验证
  373. * @param $url
  374. * @param bool $params
  375. * @param int $ispost
  376. * @return bool|mixed
  377. */
  378. function txcurl($url,$params=false,$ispost=0){
  379. $httpInfo = array();
  380. $ch = curl_init();
  381. curl_setopt( $ch, CURLOPT_HTTP_VERSION , CURL_HTTP_VERSION_1_1 );
  382. curl_setopt( $ch, CURLOPT_USERAGENT , 'JuheData' );
  383. curl_setopt( $ch, CURLOPT_CONNECTTIMEOUT , 60 );
  384. curl_setopt( $ch, CURLOPT_TIMEOUT , 60);
  385. curl_setopt( $ch, CURLOPT_RETURNTRANSFER , true );
  386. curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
  387. if( $ispost )
  388. {
  389. curl_setopt( $ch , CURLOPT_POST , true );
  390. curl_setopt( $ch , CURLOPT_POSTFIELDS , $params );
  391. curl_setopt( $ch , CURLOPT_URL , $url );
  392. }
  393. else
  394. {
  395. if($params){
  396. curl_setopt( $ch , CURLOPT_URL , $url.'?'.$params );
  397. }else{
  398. curl_setopt( $ch , CURLOPT_URL , $url);
  399. }
  400. }
  401. $response = curl_exec( $ch );
  402. if ($response === FALSE) {
  403. //echo "cURL Error: " . curl_error($ch);
  404. return false;
  405. }
  406. $httpCode = curl_getinfo( $ch , CURLINFO_HTTP_CODE );
  407. $httpInfo = array_merge( $httpInfo , curl_getinfo( $ch ) );
  408. curl_close( $ch );
  409. return $response;
  410. }
  411. /**
  412. * 根据身份证判断,是否满足年龄条件
  413. * @param type $IDCard 身份证
  414. * @param type $minAge 最小年龄
  415. * @param type $minAge 最大年龄
  416. */
  417. function isMeetAgeByIDCard($IDCard, $minAge,$maxAge) {
  418. if (strlen($IDCard) <= 15) {
  419. $IDCard = convertIDCard15to18($IDCard);
  420. }
  421. $year = date('Y') - substr($IDCard, 6, 4);
  422. $monthDay = date('md') - substr($IDCard, 10, 4);
  423. // 验证最小年龄
  424. if ($year < $minAge || $year == $minAge && $monthDay < 0) {
  425. return false;
  426. }
  427. // 验证最大年龄
  428. if ($year > $maxAge || $year == $maxAge && $monthDay > 0) {
  429. return false;
  430. }
  431. return true;
  432. }
  433. // 将15位身份证升级到18位
  434. function convertIDCard15to18($IDCard) {
  435. if (strlen($IDCard) != 15) {
  436. return false;
  437. } else {
  438. // 如果身份证顺序码是996 997 998 999,这些是为百岁以上老人的特殊编码
  439. if (array_search(substr($IDCard, 12, 3), array('996', '997', '998', '999')) !== false) {
  440. $IDCard = substr($IDCard, 0, 6) . '18' . substr($IDCard, 6, 9);
  441. } else {
  442. $IDCard = substr($IDCard, 0, 6) . '19' . substr($IDCard, 6, 9);
  443. }
  444. }
  445. $IDCard = $IDCard . calcIDCardCode($IDCard);
  446. return $IDCard;
  447. }
  448. //计算身份证的最后一位验证码,根据国家标准GB 11643-1999
  449. function calcIDCardCode($IDCardBody) {
  450. if (strlen($IDCardBody) != 17) {
  451. return false;
  452. }
  453. //加权因子
  454. $factor = array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2);
  455. //校验码对应值
  456. $code = array('1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2');
  457. $checksum = 0;
  458. for ($i = 0; $i < strlen($IDCardBody); $i++) {
  459. $checksum += substr($IDCardBody, $i, 1) * $factor[$i];
  460. }
  461. return $code[$checksum % 11];
  462. }
  463. /**
  464. * 获取礼包发号模块url
  465. * @param $id
  466. * @param string $redirecturl
  467. * @return string
  468. */
  469. function getGiftUrl($type,$id='',$redirecturl='') {
  470. if ( empty($redirecturl) ) {
  471. if (empty($id)){
  472. return WEBSITE_DOMAIN.'/gift/'.$type.'/';
  473. }
  474. return WEBSITE_DOMAIN.'/gift/'.$id.'.html';
  475. } else {
  476. return $redirecturl;
  477. }
  478. }
  479. /**
  480. * 设置 路由
  481. * @param $id
  482. * @param string $redirecturl
  483. * @return string
  484. */
  485. function getEncodeUrl($name,$suffix=1,$redirecturl='') {
  486. if ( empty($redirecturl) ) {
  487. if ($suffix == 1){
  488. return WEBSITE_DOMAIN.'/'.$name.'/';
  489. }elseif ($suffix == 2){
  490. return WEBSITE_DOMAIN.'/'.$name.'.html';
  491. }
  492. } else {
  493. return $redirecturl;
  494. }
  495. }
  496. /**
  497. * 设置 【忘记密码】 路由
  498. * @param $id
  499. * @param string $redirecturl
  500. * @return string
  501. */
  502. function getForgetPwdUrl($type,$redirecturl='') {
  503. if ( empty($redirecturl) ) {
  504. if ($type == 1){
  505. return WEBSITE_DOMAIN.'/forgotpwd.html';
  506. }elseif ($type == 2){
  507. return WEBSITE_DOMAIN.'/forgotpwd/check.html';
  508. }elseif ($type == 3){
  509. return WEBSITE_DOMAIN.'/forgotpwd/resetpwd.html';
  510. }elseif ($type == 4.1){
  511. /*return WEBSITE_DOMAIN.'/gift/'.$id.'.html';*/
  512. return WEBSITE_DOMAIN.'/forgotpwd/result1.html';
  513. }elseif ($type == 4.2){
  514. return WEBSITE_DOMAIN.'/forgotpwd/result2.html';
  515. }elseif ($type == 2.1){
  516. return WEBSITE_DOMAIN.'/forgotpwd/check/mobile.html';
  517. }elseif ($type == 2.2){
  518. return WEBSITE_DOMAIN.'/forgotpwd/check/email.html';
  519. }
  520. } else {
  521. return $redirecturl;
  522. }
  523. }
  524. /**
  525. * 设置 【个人中心】 模块 路由
  526. * @param $id
  527. * @param string $redirecturl
  528. * @return string
  529. */
  530. function getUserCenterUrl($type,$redirecturl='') {
  531. if ( empty($redirecturl) ) {
  532. if ($type == 1){
  533. return WEBSITE_DOMAIN.'/user/userinfo/';
  534. }elseif ($type == 2){
  535. return WEBSITE_DOMAIN.'/user/rechargeinfo/';
  536. }elseif ($type == 3){
  537. return WEBSITE_DOMAIN.'/user/giftbox/';
  538. }elseif ($type == 4){
  539. return WEBSITE_DOMAIN.'/user/zhaq/';
  540. }elseif ($type == 5){
  541. return WEBSITE_DOMAIN.'/user/mygame/';
  542. }
  543. } else {
  544. return $redirecturl;
  545. }
  546. }
  547. /**
  548. * 设置 【个人中心--账号安全】 模块 路由
  549. * @param $id
  550. * @param string $redirecturl
  551. * @return string
  552. */
  553. function getAccountUrl($type,$redirecturl='') {
  554. if ( empty($redirecturl) ) {
  555. if ($type == 1){
  556. return WEBSITE_DOMAIN.'/user/zhaq/changepwd/';
  557. }elseif ($type == 2){
  558. return WEBSITE_DOMAIN.'/user/zhaq/bind/selc/mobile/';
  559. }elseif ($type == 2.1){
  560. return WEBSITE_DOMAIN.'/user/zhaq/bind/validate/mobile/';
  561. }elseif ($type == 2.2){
  562. return WEBSITE_DOMAIN.'/user/zhaq/bindpage/';
  563. }elseif ($type == 3){
  564. return WEBSITE_DOMAIN.'/user/zhaq/bind/selc/email/';
  565. }elseif ($type == 3.1){
  566. return WEBSITE_DOMAIN.'/user/zhaq/bind/validate/email/';
  567. }elseif ($type == 3.2){
  568. return WEBSITE_DOMAIN.'/user/zhaq/bindpage/';
  569. }elseif ($type == 4){
  570. return WEBSITE_DOMAIN.'/user/zhaq/realname/';
  571. }
  572. } else {
  573. return $redirecturl;
  574. }
  575. }
  576. /**
  577. * 设置 【客服中心】 模块 路由
  578. * @param $id
  579. * @param string $redirecturl
  580. * @return string
  581. */
  582. function getServiceUrl($type,$redirecturl='') {
  583. if ( empty($redirecturl) ) {
  584. if ($type == 1){
  585. return WEBSITE_DOMAIN.'/kefu/cjwt/';
  586. }elseif ($type == 2){
  587. return WEBSITE_DOMAIN.'/kefu/zhss/';
  588. }elseif ($type == 3){
  589. return WEBSITE_DOMAIN.'/kefu/sscx/';
  590. }elseif ($type == 4){
  591. return WEBSITE_DOMAIN.'/kefu/wxss/';
  592. }
  593. } else {
  594. return $redirecturl;
  595. }
  596. }
  597. /**
  598. * 判断字符串是否包含敏感词
  599. * @param $word
  600. * @return bool
  601. */
  602. function isSensitiveWord($word){
  603. $list = model('SensitiveWord')->column('word');
  604. $res = false;
  605. foreach ($list as $v){
  606. if(strpos($word,$v) !== false){
  607. $res = true;
  608. break;
  609. }
  610. }
  611. return $res;
  612. }
  613. /**
  614. * 用户昵称验证
  615. * @param $nickname
  616. * @return array
  617. */
  618. function validataNickname($nickname){
  619. $code = ['code'=>0,'msg'=>''];
  620. if (((strlen($nickname) + mb_strlen($nickname,'UTF8')) / 2) > 14) {
  621. $code['msg'] = '昵称不能超过14个字符';
  622. return $code;
  623. }
  624. $res = isSensitiveWord($nickname);
  625. if ($res) {
  626. $code['msg'] = '昵称内含有敏感词,请重新输入';
  627. return $code;
  628. }
  629. $num = model('members')->where(['nickname'=>$nickname,'id'=>['neq',session('front_userid')]])->count();
  630. if ($num) {
  631. $code['msg'] = '该昵称已存在,请重新输入';
  632. return $code;
  633. }
  634. return ['code'=>1,'msg'=>''];
  635. }
  636. function jsonResult($data, $code = 0, $msg = '',$isExit=true)
  637. {
  638. $result = [
  639. 'code' => $code,
  640. 'msg' => $msg,
  641. 'data' => $data,
  642. ];
  643. return json_encode($result);
  644. }