/** * 验证来自游戏客户端(如: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; }
/** * 增加操作日志类型 * @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); }
/** * 新增一条记录 * @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); }
/** * 获取玩家的信息 */ 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}"; }
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); }
/** * 用户登录 * @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); }
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('审核完成'); }
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); } }