Example #1
0
 /**
  * 验证来自游戏客户端(如:flash前端)的请求
  * 验证说明:
  * 	1、双方约定key
  * 	2、客户端(游戏前端)使用工单、FAQ等功能前,向游戏获得_sign保存起来
  * 	3、客户端(游戏前端)访问客服后台时,附带验证参数传送
  * $_REQUEST参数	说明:
  * 	$_REQUEST['_gameid']	游戏ID由客服系统定义(用于寻找相应的验证接口)
  * 	$_REQUEST['_unique']	唯一的玩家值,可以是玩家id、玩家账号、玩家昵称 或者 游戏自定义的唯一值
  * 	$_REQUEST['_sign']		等于md5(客户端IP + _gameid + _unique + key)
  */
 public function clientChk($_key)
 {
     $ip = Tools::getClientIP();
     $gameId = intval($_REQUEST['_gameid']);
     $uniquePlayer = trim($_REQUEST['_unique']);
     if (empty($_key)) {
         $key = $this->_key;
     } else {
         $key = $_key;
     }
     $sign = trim($_REQUEST['_sign']);
     if (md5($ip . $gameId . $uniquePlayer . $key) == $sign) {
         return true;
     }
     return false;
 }
Example #2
0
 /**
  * 增加操作日志类型
  * @param array $postArr
  * @param int $type
  * @see Model::add()
  */
 public function add($postArr, $type)
 {
     if (!$type) {
         return false;
     }
     //如果没有日志类型将退出
     $this->_type = $type;
     $addArr = array();
     $addArr['type'] = $type;
     $addArr['cause'] = $postArr['cause'];
     $addArr['create_time'] = CURRENT_TIME;
     $addArr['ip'] = ip2long(Tools::getClientIP());
     $this->_utilRbac = $this->_getGlobalData('Util_Rbac', 'object');
     $userClass = $this->_utilRbac->getUserClass();
     $addArr['user_id'] = $userClass['_id'];
     $addArr['description'] = $this->_getDes($postArr);
     parent::add($addArr);
 }
Example #3
0
 /**
  * 新增一条记录
  * @param string $msg
  */
 public function add($msg = null, $constraint = FALSE)
 {
     if ($constraint === false) {
         if (in_array(CONTROL, array('Index', 'Default', 'Log', 'InterfaceFaq', 'InterfacePassport', 'InterfaceUpdate', 'InterfaceWorkOrder'))) {
             return;
         }
     }
     $this->_utilRbac = $this->_getGlobalData('Util_Rbac', 'object');
     $userClass = $this->_utilRbac->getUserClass();
     $insertArr = array();
     $insertArr['user_id'] = $userClass['_id'] ? $userClass['_id'] : 0;
     $insertArr['time'] = CURRENT_TIME;
     $insertArr['ip'] = ip2long(Tools::getClientIP());
     $insertArr['control'] = strtolower(CONTROL);
     $insertArr['action'] = strtolower(ACTION);
     $insertArr['doaction'] = strtolower($_GET['doaction']);
     if ($msg) {
         $insertArr['msg'] = $msg;
     }
     parent::add($insertArr);
 }
Example #4
0
 /**
  * 获取玩家的信息 
  */
 public function getPlayerDataByAccount($playerAccount = '', $serverId = 0)
 {
     if (empty($playerAccount)) {
         return array();
     }
     $ifConf = $this->getIfConf();
     $getData = $this->getGetData($ifConf['PlayerLookup']['get'], $serverId);
     $postData = array('accountName' => $playerAccount, 'pageSize' => 1, 'pageCount' => 1);
     $server = $this->_getGlobalData('server/server_list_' . $this->_gameId);
     $sendUrl = '';
     if ($server[$serverId]) {
         $sendUrl = $server[$serverId]['server_url'];
     }
     if (empty($sendUrl)) {
         return array();
     }
     $utilHttpInterface = $this->_getGlobalData('Util_HttpInterface', 'object');
     $data = $utilHttpInterface->result($sendUrl, $ifConf['PlayerLookup']['UrlAppend'], $getData, $postData);
     $returnData = array();
     if ($data && ($data = json_decode($data, true)) && is_array($data['data']['players']['0']) && ($playerInfo = $data['data']['players']['0'])) {
         $returnData = array('user_id' => Tools::d2s($playerInfo['playerId']), 'user_account' => $playerAccount, 'user_nickname' => $playerInfo['playerName'], 'money_total' => 0, 'money_month' => 0, 'register_date' => strtotime($playerInfo['regTime']), 'ip' => Tools::getClientIP());
     }
     return $returnData;
 }
 /**
  * 根据id来接收一个请求
  * @param int $id
  * @return boolean/string 
  */
 private function _acceptId($id)
 {
     $data = $this->findById($id);
     if (!in_array($data['type'], $this->_options)) {
         return "Id:{$id} : <font color='#FF0000'>您没有权限审核这项</font>.";
     }
     if ($this->_operatorsLimit && !in_array($data['operator_id'], $this->_operatorsLimit)) {
         return "Id:{$id} : <font color='#FF0000'>您没有权限审核这项</font>.";
     }
     if ($data) {
         $this->_utilRbac = $this->_getGlobalData('Util_Rbac', 'object');
         $userClass = $this->_utilRbac->getUserClass();
         if ($data['is_send'] == 1) {
             return "Id:{$id} 已经被审核过";
         }
         if ($data['type'] >= 10) {
             //如果是批量审核的话
             switch ($data['type']) {
                 case '10':
                     //多服务器发送奖励
                     $serverList = $this->_getGlobalData('gameser_list');
                     $data['post_data'] = unserialize($data['post_data']);
                     $data['post_data']['send_players'] = str_replace('\\', '', $data['post_data']['send_players']);
                     //去除\,好反序列化
                     $sendPlayerIds = unserialize($data['post_data']['send_players']);
                     //得到要发送的玩家
                     unset($data['post_data']['send_players']);
                     //删除掉这些玩家,一会好发送post数据给游戏接口
                     $this->_utilApiFrg = $this->_getGlobalData('Util_ApiFrg', 'object');
                     $this->_utilApiFrg->curlInit();
                     $getArr = unserialize($data['send_action']);
                     foreach ($sendPlayerIds as $key => $list) {
                         $data['post_data']['UserIds'] = implode(',', $list);
                         //加自要发送的玩家ID
                         $data['post_data']['UserIds'] = str_replace(' ', '', $data['post_data']['UserIds']);
                         //去掉空格
                         $this->_utilApiFrg->addHttp($key, $getArr, $data['post_data']);
                     }
                     $this->_utilApiFrg->send();
                     $sendResult = array();
                     $result = $this->_utilApiFrg->getResults();
                     foreach ($result as $key => $backParams) {
                         $color = $backParams['msgno'] == 1 ? '#00CC00' : '#ff0000';
                         //定义颜色
                         $message = $backParams['msgno'] == 1 ? '发送成功' : '发送失败';
                         $backParams['message'] = $backParams['message'] ? $backParams['message'] : $message;
                         if ($backParams) {
                             $string = "{$serverList[$key]['full_name']} : <font color='{$color}'>{$backParams['message']}</font>";
                             $string = $this->_createAcceptMsg(1, $backParams, $string);
                             //发送消息
                             array_push($sendResult, $string);
                         } else {
                             $string = "{$serverList[$key]['full_name']} : <font color='{$color}'>{$backParams['message']}</font>";
                             array_push($sendResult, $string);
                         }
                     }
                     $retStr = implode('<br>', $sendResult);
                     $this->update(array('is_send' => 1, 'audit_ip' => ip2long(Tools::getClientIP()), 'send_time' => CURRENT_TIME, 'audit_user_id' => $userClass['_id'], 'send_result' => $retStr), "Id={$id}");
                     $this->_utilApiFrg = null;
                     return $retStr;
                 case '11':
                     //多服务器奖励触发
                     $serverList = $this->_getGlobalData('gameser_list');
                     $data['post_data'] = unserialize($data['post_data']);
                     $serverIds = $data['post_data']['server_ids'];
                     //得到要发送的服务器
                     unset($data['post_data']['server_ids']);
                     //删除掉这些玩家,一会好发送post数据给游戏接口
                     $this->_utilApiFrg = $this->_getGlobalData('Util_ApiFrg', 'object');
                     $this->_utilApiFrg->curlInit();
                     $getArr = unserialize($data['send_action']);
                     foreach ($serverIds as $serverId) {
                         $this->_utilApiFrg->addHttp($serverId, $getArr, $data['post_data']);
                     }
                     $this->_utilApiFrg->send();
                     $sendResult = array();
                     $result = $this->_utilApiFrg->getResults();
                     foreach ($result as $key => $backParams) {
                         $color = $backParams['msgno'] == 1 ? '#00CC00' : '#ff0000';
                         //定义颜色
                         $message = $backParams['msgno'] == 1 ? '发送成功' : '发送失败';
                         $backParams['message'] = $backParams['message'] ? $backParams['message'] : $message;
                         if ($backParams) {
                             $string = "{$serverList[$key]['full_name']} : <font color='{$color}'>{$backParams['message']}</font>";
                             array_push($sendResult, $string);
                         } else {
                             $string = "{$serverList[$key]['full_name']} : <font color='{$color}'>{$backParams['message']}</font>";
                             array_push($sendResult, $string);
                         }
                     }
                     $retStr = implode('<br>', $sendResult);
                     $this->update(array('is_send' => 1, 'audit_ip' => ip2long(Tools::getClientIP()), 'send_time' => CURRENT_TIME, 'audit_user_id' => $userClass['_id'], 'send_result' => $retStr), "Id={$id}");
                     $this->_utilApiFrg = null;
                     return $retStr;
                 case '12':
                     //生成金币卡
                     $this->_modelGoldCard = $this->_getGlobalData('Model_GoldCard', 'object');
                     $data = $this->_modelGoldCard->import(unserialize($data['post_data']));
                     if ($data['status'] == 1) {
                         $updateArr = array('is_send' => 1, 'audit_ip' => ip2long(Tools::getClientIP()), 'send_time' => CURRENT_TIME, 'audit_user_id' => $userClass['_id'], 'send_result' => "Id:{$id} <font color='#00CC00'>生成金币卡成功</font>");
                         $this->update($updateArr, "Id={$id}");
                         return '<font color="#00CC00">' . $data['msg'] . '</font>';
                     }
                     return '<font color="#FF0000">生成金币卡失败</font>';
             }
         } else {
             $this->_utilFRGInterface = $this->_getGlobalData('Util_FRGInterface', 'object');
             $this->_utilFRGInterface->setServerUrl($data['server_id']);
             $this->_utilFRGInterface->setGet(unserialize($data['send_action']));
             $this->_utilFRGInterface->setPost(unserialize($data['post_data']));
             $backParams = $this->_utilFRGInterface->callInterface();
             $this->_utilFRGInterface = null;
             $color = $backParams['msgno'] == 1 ? '#00CC00' : '#ff0000';
             //定义颜色
             if ($backParams['msgno'] == 1) {
                 $updateArr = array('is_send' => 1, 'audit_ip' => ip2long(Tools::getClientIP()), 'send_time' => CURRENT_TIME, 'audit_user_id' => $userClass['_id'], 'send_result' => $this->_createAcceptMsg($data['type'], $backParams, "Id:{$id} <font color='{$color}'>{$backParams['message']}</font>"));
                 $this->update($updateArr, "Id={$id}");
             }
             return $this->_createAcceptMsg($data['type'], $backParams, "Id:{$id} <font color='{$color}'>{$backParams['message']}</font>");
         }
     }
     return "无此记录Id : {$id}";
 }
Example #6
0
 public function AddApply($data)
 {
     //检查申请原因
     if (!trim($data['apply_info'])) {
         return array('status' => 0, 'info' => '申请原因、数据为空', 'data' => NULL);
     }
     //检查发送类型
     if (!in_array($data['send_type'], $this->_sendType)) {
         return array('status' => 0, 'info' => '发送类型ID错误', 'data' => NULL);
     }
     //检查玩家类型
     if (!in_array($data['player_type'], $this->_playerType)) {
         return array('status' => 0, 'info' => '玩家类型错误', 'data' => NULL);
     }
     //检查申请类型
     $type = $data['type'];
     $game_type = $data['game_type'];
     $list_type = $data['list_type'];
     $ApplyType = $this->_getGlobalData(self::APPLY_TYPE);
     if (!isset($ApplyType[$list_type][$game_type][$type])) {
         return array('status' => 0, 'info' => '申请类型不存在', 'data' => NULL);
     }
     //检查服务器、运营商、游戏
     if ($data['server_id'] > 0) {
         $gameser_list = $this->_getGlobalData('gameser_list');
         $info = false;
         if (!isset($gameser_list[$data['server_id']])) {
             $info = '服务器ID不存在';
         } elseif ($data['operator_id'] != -1 && $gameser_list[$data['server_id']]['operator_id'] != $data['operator_id']) {
             $info = '运营商ID错误';
         } elseif ($gameser_list[$data['server_id']]['game_type_id'] != $data['game_type']) {
             $info = '游戏ID错误';
         }
         if ($info) {
             return array('status' => 0, 'info' => $info, 'data' => NULL);
         }
     }
     //检查发送数据
     if ($data['send_data']) {
         if (!is_string($data['send_data'])) {
             $data['send_data'] = serialize($data['send_data']);
         }
     } else {
         return array('status' => 0, 'info' => '发送数据为空', 'data' => NULL);
     }
     if (!is_string($data['receiver_object'])) {
         $data['receiver_object'] = serialize($data['receiver_object']);
     }
     $data = $this->_getData($data, $this->_addFields);
     $userClass = $this->_utilRbac->getUserClass();
     $data['apply_user_id'] = $userClass['_id'];
     $data['apply_ip'] = Tools::getClientIP();
     $data['create_time'] = CURRENT_TIME;
     $data['is_send'] = 0;
     return $this->add($data);
 }
Example #7
0
 /**
  * 用户登录
  * @param string $userName 用户名
  * @return void
  */
 public function setLogin($userName)
 {
     $decodePass = $userName . '|' . Tools::getClientIP();
     //		Tools::setHeadP3P();
     $decodePass = Tools::dencrypt($decodePass);
     setcookie(SESSION_USER_KEY, $decodePass, CURRENT_TIME + 60 * 60 * 6);
     $userClass = $this->getUserClass($userName);
     $userClass->setInfo();
     $userClass->setUpdateInfo(1);
 }
Example #8
0
 private function _reject()
 {
     if (empty($_POST['Id'])) {
         $this->_utilMsg->showMsg('没有选择', -1);
     }
     if (is_array($_POST['Id'])) {
         $Ids = implode(',', $_POST['Id']);
         $amount = count($_POST['Id']);
     } else {
         $Ids = trim($_POST['Id']);
         $amount = count(explode(',', $Ids));
     }
     $this->_modelApply = $this->_getGlobalData('Model_Apply', 'object');
     if ($amount == 1) {
         $sql = 'select * from ' . $this->_modelApply->tName() . " where Id = {$Ids}";
     } else {
         $sql = 'select * from ' . $this->_modelApply->tName() . " where Id in ({$Ids})";
     }
     $dataList = $this->_modelApply->select($sql);
     $validData = array();
     //用户对象
     $userClass = $this->_utilRbac->getUserClass();
     foreach ($dataList as $sub) {
         if ($sub['is_send'] == 0) {
             $tmp['Id'] = $sub['Id'];
             $tmp['audit_user_id'] = $userClass['_id'];
             $tmp['audit_ip'] = Tools::getClientIP();
             $tmp['send_time'] = CURRENT_TIME;
             $tmp['is_send'] = 2;
             $validData[$sub['Id']] = $tmp;
         } else {
             $validData[$sub['Id']] = false;
         }
     }
     $this->_modelApply->AuditUpdata($validData);
     $this->_utilMsg->showMsg('审核完成');
 }
Example #9
0
 public function PayForGold($postArr, $gameId = 2)
 {
     //$gameId = 2兼容富人国
     if (!$postArr['server_id']) {
         return array('status' => -1, 'msg' => '请选择服务器', 'href' => 1);
     }
     if (!$postArr['card']) {
         return array('status' => -1, 'msg' => '请输入卡号', 'href' => 1);
     }
     if (!$postArr['use_name']) {
         return array('status' => -1, 'msg' => '请输入用户名', 'href' => 1);
     }
     $cardDetail = $this->select("select * from {$this->tName()} where game_type={$gameId} and card='{$postArr['card']}'", 1);
     if (!$cardDetail) {
         return array('status' => -1, 'msg' => "卡号: <b>{$postArr['card']}</b> 不存在", 'href' => 1);
     }
     if ($cardDetail['is_use'] == 1) {
         return array('status' => -1, 'msg' => "卡号: <b>{$postArr['card']}</b> 已经使用过了", 'href' => 1);
     }
     if ($cardDetail['start_time'] && $cardDetail['end_time']) {
         //表示有时间限制.
         if ($cardDetail['start_time'] < CURRENT_TIME) {
             return array('status' => -1, 'msg' => '此卡号还未到使用时间', 'href' => 1);
         }
         //如果开始时间小于当前时间
         if (CURRENT_TIME > $cardDetail['end_time']) {
             return array('status' => -1, 'msg' => '此卡号以过期', 'href' => 1);
         }
     }
     $this->_modelGameSerList = $this->_getGlobalData('Model_GameSerList', 'object');
     $serverList = $this->_modelGameSerList->findByGameIdOperatorId($gameId, $cardDetail['operator_id']);
     if (!array_key_exists($postArr['server_id'], $serverList)) {
         return array('status' => -1, 'msg' => '您的卡号无法充值所选择的服务器', 'href' => 1);
     }
     //兼容其他游戏配置
     //		$gameClass = $this->_getGlobalData($gameId,'game');
     //		if($gameClass){
     //			$tmp = $gameClass->getOptConf();
     //			if($tmp){
     //				$this->_payKey = $tmp;
     //				unset($tmp);
     //			}
     //		}
     //$this->_payKey = $this->getKey($gameId);
     //使用的配置改为从表中取
     $gameObject = $this->_getGlobalData($gameId, 'game');
     $gameOperatorExt = $gameObject->getOptConf($cardDetail['operator_id']);
     $syskey = isset($gameOperatorExt['syskey']) ? $gameOperatorExt['syskey'] : '';
     $this->_utilApiFrg = $this->_getGlobalData('Util_ApiFrg', 'object');
     $getArr = array('m' => 'User', 'c' => 'Deposit', 'a' => 'PayForGold', 'addcoin' => $cardDetail['type'], 'Uname' => $postArr['use_name'], 'Money' => $cardDetail['gold'], 'Transactionid' => $cardDetail['card'], 'Depay' => 0, 'gDepay' => 0, 'isGoldCard' => $cardDetail['card_type'], 'GoldCard' => $cardDetail['card'], 'GameId' => isset($gameOperatorExt['GameId']) ? $gameOperatorExt['GameId'] : '', 'ServiceId' => strpos($serverList[$postArr['server_id']]['marking'], '|') ? end(explode('|', $serverList[$postArr['server_id']]['marking'])) : intval(preg_replace('/[a-zA-Z]*(\\d+).*/', '\\1', $serverList[$postArr['server_id']]['marking'])));
     if (strpos($serverList[$postArr['server_id']]['marking'], '|') !== false) {
         strpos($serverList[$postArr['server_id']]['marking'], '|') ? end(explode('|', $serverList[$postArr['server_id']]['marking'])) : $serverList[$postArr['server_id']]['marking'];
     }
     //$syskey=$this->_payKey[$cardDetail['operator_id']]['key'];
     $sign = "Depay={$getArr['Depay']}&gDepay={$getArr['gDepay']}&addcoin={$getArr['addcoin']}&Uname={$getArr['Uname']}&Money={$getArr['Money']}&GameId={$getArr['GameId']}&ServiceId={$getArr['ServiceId']}&Transactionid={$getArr['Transactionid']}&Key={$syskey}";
     $getArr['Sign'] = md5($sign);
     $url = $serverList[$postArr['server_id']]['server_url'] . 'php/interface.php';
     $this->_utilApiFrg->addHttp($url, $getArr);
     $this->_utilApiFrg->send();
     $data = $this->_utilApiFrg->getResult();
     if ($data['data'] == 1) {
         //成功
         $updateArr = array('is_use' => 1, 'user_name' => $postArr['use_name'], 'user_ip' => ip2long(Tools::getClientIP()), 'use_time' => CURRENT_TIME, 'use_server_id' => $postArr['server_id']);
         $this->update($updateArr, "Id={$cardDetail['Id']}");
         return array('status' => 1, 'msg' => '领取成功', 'href' => 1);
     } else {
         return array('status' => -2, 'msg' => '领取失败。' . $data['message'], 'href' => 1);
     }
 }