MontiQ Опубликовано 25 августа, 2013 Поделиться Опубликовано 25 августа, 2013 (изменено) Добрый день. Столкнулся с проблемой. именно , что не могу сделать отоброжение строчки как надо : есть файл <?php if (!defined('SELL_SCRIPT')) {header("Location: ./"); die();} $cipher = "rijndael-256"; $mode = MCRYPT_MODE_CBC; function test_db_config() { global $cfgDbHost, $cfgDbUsername, $cfgDbPassword,$cfgDbTableAccounts,$cfgDbName,$fields; $database = @mysql_connect ( $cfgDbHost, $cfgDbUsername, $cfgDbPassword ); //$database = @mysql_connect ( $cfgDbHost, "root", "" ); if ($database) { // соединились, врубаем кодировку utf8 if (function_exists('mysql_set_charset')) { mysql_set_charset("utf8"); } else { mysql_query("SET NAMES utf8"); } // пробуем выбрать базу $result = mysql_select_db ( $cfgDbName, $database ); if (!$result) { showerror ("Не могу открыть базу с данными для работы!<br />".mysql_error()); die(); } else {// таблица найдена. проверяем наличие таблицы $r = mysql_query("SELECT 1 FROM `".$cfgDbTableAccounts."` WHERE 0"); if (!$r) { // Таблица не существует showerror ("Таблица с аккаунтами отсутствует!"); die(); } else {// тестим поля if (is_array($fields)) { foreach ($fields as $field=>$data) { // проверяем существование полей в таблице: $r = mysql_query("SELECT `".$field."` FROM `".$cfgDbTableAccounts."` WHERE 0"); if (!$r) { showerror ("В таблице данных отсутствует поле ".$field."!"); die(); } } } else { showerror ("В конфигурации не задан список полей таблицы!"); die(); } } } } else { showerror ("Ошибка соедиения с сервером базы данных!<br />".mysql_error()); die(); } } function showerror ($msg) { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "__www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Критическая ошибка!</title> <style type="text/css"> .rounded-corner { css-border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; } .title-text { vertical-align: top; } #main-content { font-family:Arial,sans-serif; margin-top: 150px; margin-left: auto; margin-right: auto; position: relative; width: 650px; } #error-message { text-align: center; font-size: 12px; font-weight: bold; color: #666; background-color: #FFC; margin-top: 50px; padding: 12px 0; border: 1px solid #FFCC05; } #logo { float: left; padding: 0 20px; border-right: 1px solid #CCC; } #links { text-align: center; margin-top: 10px; font-size:11px; line-height:13px; border:1px; } #copynotice { margin: 20px 0; text-align: center; font-size: 11px; } </style> </head> <body> <div id="main-content"> <div id="error-message" class="rounded-corner"> <div id="logo"> <a href="/"><img src="./img/logo.png" border=0/></a> </div> <?php echo $msg;?> <div style="clear:both;"></div> </div> <div id="links"> <a href="./index.php">Главная</a> </div> <div id="copynotice"> © 2011 Amx-Admin </div> </div> </body> </html> <?php } function test_ssh_function() { if (!extension_loaded('ssh2')) { showerror ("Библиотека php для работы с SSH отсутствует!"); die(); } } function error_msg_format($msg) { return '<div id="error-message" class="rounded-corner">'.$msg.'</div>'; } function info_msg_format($msg) { return '<div id="info-message" class="rounded-corner">'.$msg.'</div>'; } function upload_config ($server,$config_text) { global $gameservers,$info_msg,$error_msg; // Имена файлов // создаем временный файл $local_tmp_configfile = tempnam("tmp", ""); if ($local_tmp_configfile===false) { $error_msg = "Внутренняя ошибка генерации конфигурации (возможно недоступен временный каталог)"; return; } $handle = fopen($local_tmp_configfile, "w"); if (!$handle) { $error_msg = "Внутренняя ошибка генерации конфигурации (возможно он недоступен для записи)"; return; } fwrite($handle, $config_text); fclose($handle); $remote_file = 'users.ini'; // Открытие соединения $conn_id = ftp_connect($gameservers[$server][0]); if ($conn_id){ // Авторизация $login_result = ftp_login($conn_id, $gameservers[$server][1], $gameservers[$server][2]); if ($login_result) { // переходим в папку $chdir = ftp_chdir($conn_id, $gameservers[$server][3]); if ($chdir) { // Загрузка файла $server_file и сохранение его как $local_file if ($res = ftp_put($conn_id, $remote_file, $local_tmp_configfile, FTP_BINARY)) { $info_msg .= "Файл конфигурации успешно загружен на ".$server."<br />"; // проверяем что есть необходимость обновления юзеров if (isset($gameservers[$server][6],$gameservers[$server][7],$gameservers[$server][8]) && !( empty($gameservers[$server][6]) || empty($gameservers[$server][7]) || empty($gameservers[$server][8]) )) { list($addr,$port) = explode(":",$gameservers[$server][6],2); if (isset($addr,$port) && !empty($addr) && !empty($port)) { //error_reporting(E_ERROR | E_WARNING | E_PARSE); error_reporting(E_ERROR); //connect to current server $rcon_server = new Rcon(); //build connection to Gameserver $pass=$gameservers[$server][7]; $rcon_server->Connect($addr, $port, $pass); $command = "amx_reloadadmins"; $result = $rcon_server->RconCommand($command); //close connection $rcon_server->Disconnect(); // if ($result) { preg_match("/[AMXX] Loaded (d+)+ admins? from file/u",$result,$admins); if (isset($admins[1]) && !(empty($admins[1]) && $admins[1]!=="0")) { $info_msg .= "Произведена мгновенная перезагрузка списка админов на сервере. всего админов: ".$admins[1]."<br />"; } else { $error_msg .= "<br /> Ошибка мгновенной перезагрузки списка юзеров в игре:<br>".$result; } } else { $error_msg .= "<br /> Ошибка! Не могу соединиться через Rconn с $server для мгновенного обновления списка админов в игре. <br>Вход на сервер будет возможен после смены локации в игре"; } } else { $error_msg .= "<br />Ошибка в адресе сервера при подаче rconn! Сервер: ".$server."."; } } } else { $error_msg = "Ошибка загрузки файла конфигурации! Сервер: ".$server."."; } } else { $error_msg = "Не могу перейти в каталог настроек! Сервер: ".$server."."; } } else { $error_msg = "Ошибка авторизации на FTP во время обновления конфигурации! Сервер: ".$server."."; } ftp_close($conn_id); } else { $error_msg = "Не могу подключиться к серверу для обновления конфигурации! Сервер: ".$gameservers[$server][3]."."; } // удаляем временный локальный файл конфига unlink($local_tmp_configfile); } function format_serverlist($servers,$current,$check_post_ok) { if (!is_array($servers) || count($servers)<1) { return "<b>Серверов пока нет</b>"; } $list = ""; if (empty($current) || !$check_post_ok) { foreach ($servers as $name=>$serv) { $sel = ""; if ($current==$name) { $sel = ' selected="selected"'; } $list .= " <option".$sel.">".$name."</option>rn"; } } else { $list = " <option>".$current."</option>rn"; } return "<select name='selected_server'>rn".$list."</select>rn"; } function format_price_list($prices,$current) { if (!is_array($prices[$current]) || count($prices[$current])<1) { return " <b>Тарифов на этом сервере пока нет</b>"; } $list = ""; foreach ($prices[$current] as $price) { $list .= " <option>".$price[2]."</option>rn"; } return "<select name='selected_price'>rn".$list."</select>rn"; } function format_config_options() { global $admin_options, $admin_options_disabled, $admin_login_acc_config, $admin_login_options_disabled; // получаем настройки для админа $admin_acc_config = ""; foreach ($admin_options as $key=>$descr) { if (isset($_POST["adm_opt_".$key]) && !empty($_POST["adm_opt_".$key]) && !in_array($key,$admin_options_disabled)) { $admin_acc_config .= $key; } } // получаем настройки для логина $admin_login_acc_config = ""; foreach ($admin_login_options as $key=>$descr) { if (isset($_POST["adm_opt_".$key]) && !empty($_POST["adm_opt_".$key]) && !in_array($key, $admin_login_options_disabled)) { $admin_login_acc_config .= $key; } } return array($admin_acc_config,$admin_login_acc_config); } function generate_config($server) { global $gameservers,$cfgDbTableAccounts; // считываем из базы действующие акки для этого сервера $sql = "SELECT `date_pay`, `login`, `pass`, `options`, `access_flags`, `days_count` FROM ".$cfgDbTableAccounts." WHERE `server`='".$server."' AND `activated`=1"; //var_dump($sql); $select = mysql_query($sql); if (mysql_num_rows($select) > 0) { $config = ""; while ($row = mysql_fetch_assoc($select)) { if (($row[date_pay]+$row[days_count]*3600*24)>time() || $row[days_count]==0) { $config .= '"'.$row[login].'" "'.$row[pass].'" "'.$row[options].'" "'.$row[access_flags].'"'."rn"; } } } return $config; } function show_tariffs() { global $gameservers,$prices; $tarifs = ""; foreach($gameservers as $server=>$conf) { if (is_array($prices) && is_array($prices[$server]) && count($prices[$server])>0) { $temp_tarifs = ""; foreach ($prices[$server] as $curr_tarif) { $temp_tarifs .= ' '.$curr_tarif[2].','; } $tarifs .= "<a class='plugins' href='./mon.php?serv=".$conf[6]."'><b><u>".$server."</u></b></a> ".(!empty($conf[6])?('('.$conf[6].')'):'')." -".$temp_tarifs."<br />rn"; } else { $tarifs .= "<b>".$server."</b> - тарифов пока нет<br />rn"; } } return $tarifs; } class XMLParser { var $path; var $result; function cleanString($string) { return trim(str_replace("'", "'", $string)); } function XMLParser($encoding, $data) { $this->path = "$this->result"; $this->index = 0; $xml_parser = xml_parser_create($encoding); xml_set_object($xml_parser, &$this); xml_set_element_handler($xml_parser, 'startElement', 'endElement'); xml_set_character_data_handler($xml_parser, 'characterData'); xml_parse($xml_parser, $data, true); xml_parser_free($xml_parser); } function startElement($parser, $tag, $attributeList) { $this->path .= "->".$tag; eval("$data = ".$this->path.";"); if (is_array($data)) { $index = sizeof($data); $this->path .= "[".$index."]"; } else if (is_object($data)) { eval($this->path." = array(".$this->path.");"); $this->path .= "[1]"; } foreach($attributeList as $name => $value) eval($this->path."->".$name. " = '".XMLParser::cleanString($value)."';"); } function endElement($parser, $tag) { $this->path = substr($this->path, 0, strrpos($this->path, "->")); } function characterData($parser, $data) { if (strlen($data = XMLParser::cleanString($data))) eval($this->path." = '$data';"); } } // Шифрование данных function encrypt($data, $key, $cipher, $mode) { return (string)base64_encode ( mcrypt_encrypt ( $cipher, substr (md5 ($key) , 0,mcrypt_get_key_size ($cipher, $mode) ) , $data, $mode, substr (md5 ($key), 0, mcrypt_get_block_size ($cipher, $mode)) ) ); } // Дешифрование данных function decrypt($data, $key, $cipher, $mode) { return (string) mcrypt_decrypt ( $cipher, substr(md5($key),0,mcrypt_get_key_size($cipher, $mode)), base64_decode($data), $mode, substr(md5($key),0,mcrypt_get_block_size($cipher, $mode)) ); } function acc_list() { global $cfgDbTableAccounts; $accounts = array(); $sql = "SELECT `login` FROM `".$cfgDbTableAccounts."`"; $select = mysql_query($sql); if (mysql_num_rows($select) > 0) { while ($row = mysql_fetch_assoc($select)) { $accounts[] = $row['login']; } } return $accounts; } function get_logintype ($access_flags,$type=0) { if (stripos($access_flags,"a")!==false) { $login_type = "login_pass"; $login_type_txt = "паролю"; } elseif (stripos($access_flags,"d")!==false && stripos($access_flags,"e")!==false) { $login_type = "IP"; $login_type_txt = "IP"; } elseif (stripos($access_flags,"c")!==false && stripos($access_flags,"e")!==false) { $login_type = "steamid"; $login_type_txt = "SteamID"; } else { $login_type = "login_pass"; $login_type_txt = "паролю"; } if ($type==0) { return $login_type; } else { return $login_type_txt; } } function format_acc_edit_form($user_info) { $login_type = get_logintype($user_info["access_flags"]); global $gameservers; return '<form method="post" action=""> <input type="hidden" name="account_edit_num2" value="'.$user_info[userid].'"> <table cellpadding="4" width="1000px" cellspacing="0" style="padding:2px; border:2px dashed #cccccc;"> <tr align="center"> <td width="15%"><b>Логин / IP-адрес / SteamID:</b></td> <td width="15%"><b>Пароль:</b></td> <td width="12%"align="left"><b>Тип авторизации:</b></td> <td width="10%"><b>Права аккаунта:</b></td> <td width="10%"><b>Cервер:</b></td> <td width="10%"><b>Эл. почта:</b></td> </tr> <tr valign="top"> <td ><input type="text" name="admin_login" value="'.$user_info[login].'" size="25"></td> <td ><input type="text" name="admin_pass" value="'.$user_info[pass].'" size="20"></td> <td rowspan="2"> <input type="radio" name="logintype" value="loginpass" '.($login_type == "login_pass"?'checked="checked"':'').' /> логин и пароль<br /> <input type="radio" name="logintype" value="byIP" '.($login_type == "IP"?'checked="checked"':'').' /> по IP-адресу<br /> <input type="radio" name="logintype" value="SteamID" '.($login_type == "steamid"?'checked="checked"':'').' /> по SteamID </td> <td ><input type="text" name="admin_rights" value="'.$user_info[options].'" size="20"></td> <td>'.format_serverlist($gameservers,$user_info[server],false).' </td> <td ><input type="text" name="email" value="'.$user_info.'" size="20"></td> </tr> <tr align="center"> <td><b>Акк на <input type="text" name="days" value="'.$user_info[days_count].'" size="5"> дней</b></td> <td><b>Цена:</b> <input type="text" name="price" value="'.$user_info[account_price].'" size="5"></td> <td colspan="2" align="left"><input type="checkbox" name="activate" '.($user_info[activated]=="1"?'disabled="disabled" checked="checked"><b> аккаунт активирован</b>':"><b> активировать аккаунт</b>").' <br /><input type="checkbox" name="paydate_update"><b> обновить дату оплаты (акк оплачен сейчас):</b></td> <td align="center" > <input type="submit" name="save" value="Обновить акк" class="button" style="border:7px groove #0000ff;"> </td> </tr> <tr> <td colspan="6">Допполнительные контакты для связи (ICQ, Skype, другое), пожелания админу, примечания:<br /><input class="form_off" type="text" onFocus="this.className='form_on'" onBlur="this.className='form_off'" name="comment" value="'.$user_info[comment].'" style="width: 100%;"></td> </tr> <tr> <td colspan="6" align="center" > <input onclick = "return confirm('Точно удалить этот акк?')" type="submit" name="delete" value=" Удалить акк " class="button" style="border:7px groove #ff0000;"> </td> </tr> </table></form>'; } function format_acc_line($acc,$i=0) { global $inv_id; $login_type_txt = get_logintype($acc["access_flags"],1); $end_acc = $acc ["date_pay"]+3600*24*$acc ["days_count"]; $color = (($i % 2)==0)?"#FFFFFF":"#E8EEF7"; if (isset($inv_id) && $inv_id == $acc["userid"]) { $color = "#AAE8AA"; } return '<tr align="center" bgcolor="'.$color.'" onclick="edit(''.$acc['userid'].'')">'."rn". " <td> ".date('d.m.Y',$acc ["date_create"])."</td>rn". ($acc ["date_pay"]!=0?(" <td> ".date('d.m.Y H:i',$acc ["date_pay"])."</td>rn"):" <td>не оплачен</td>"). ($acc ["days_count"]!=0 ? ($end_acc>time() ? ($acc[activated]=="1" ? " <td bgcolor='#44E844'>".date('d.m.Y',$end_acc)."</td>rn" : " <td bgcolor='#999999'>не активен</td>rn" ) : ($acc ["date_pay"]!=0 ? " <td bgcolor='#FF6666'> просрочен</td>rn" : " <td bgcolor='#66FFFF'> не оплачен</td>rn" ) ) : ($acc[activated]=="1" ? " <td bgcolor='#FFFF66'><b>∞</b> никогда</td>" : " <td bgcolor='#999999'>не активен</td>rn" ) ). //($acc ["date_pay"]!=0?($end_acc>time()?(" <td> ".date('d.m.Y',$end_acc)."</td>rn"):(" <td> просрочен</td>rn"))$acc ["date_pay"]==0?" <td>не оплачен</td>":" <td>закончился</td>")). " <td> ".$acc ["server"]."</td>rn". " <td> ".$acc ["login"]."</td>rn". " <td> ".$acc ["account_price"]."</td>rn". " <td> ".$acc ["days_count"]."</td>rn". " <td class='b-fade' title='".$acc ["email"]."'> ".$acc ["email"]."<i class='fade'></i></td>rn". " <td> ".$login_type_txt."</td>rn". " <td> ".$acc ["login"]."</td>rn". " <td> ".$acc ["pass"]."</td>rn". " <td> ".$acc ["options"]."</td>rn". " <td class='b-fade' title='".$acc ["comment"]."' >".$acc ["comment"]."<i class='fade'></i></td>rn". " <td class='b-fade' title='".$acc ["imya"]."' >".$acc ["imya"]."<i class='fade'></i></td>rn". "</tr>rn"; } function format_accounts_table($data) { $curr_date = date('H:i:s, d.m.Yг.',time()); return '<center><h4>Текущие время и дата (МСК): '.$curr_date.'<br />Состояние аккаунтов на серверах:</h4> <form method="post"> <input onclick = "return confirm('Точно надо создать новый акк?')" type="submit" name="create" value=" Создать новый аккаунт " class="button" style="border:7px groove #00ff00;"> </form> <caption>щелкните на строке аккаунта, чтобы изменить или удалить его</caption> <tbody> <dv class="modal fade" id="modal1"> <table class="table table-bordered table-hover"> <thead> <th><i class="icon-hand-right"></i> Ник Админа</th> <th><i class="icon-user"></i> Сервер</th> <th><i class="icon-fire"></i> Оплачен</th> <th><center><i class="icon-calendar"></i> Истекает</center></th> <th><center><i class="icon-comment"></i> Подробно</center></th> </thead></div> <tr style="background-color: #f5f5f5;" rel="popover" dera-trigger="hover"> <td><b>'.$userinfo[date_pay].'</b></td> <td><b>ntrer</b></td> <td><b>erngr</b></td> <td><b>dfgrtg</b></td> <td><center><a data-toggle="modal" href="#modal'.$i.'" class="btn btn-mini btn-info" href="#"><i class="icon-fullscreen icon-white"></i></a></center></td> </tr> <div class="modal fade" id="modal'.$i.'"> <div class="modal-header"> <button class="close" data-dismiss="modal">×</button> <h3><center><img alt="" src="images/country/GE.png" /> (1)Gamer</center></h3> <small style="color: #fff;"><b>Забанен:</b> 21.08.2013 [13:16] </small><small style="color: #fff; float:right;"><b>Разбан:</b> <span style="font-style:italic;font-weight:bold;color:red">Никогда</span></small> </div> <div class="modal-body"> <div style="clear:both;"></div> <div class="alert alert-danger"> <div rel="tooltip" data-placement="bottom" data-original-title="Прошло 0% бана"> <div class="progress progress-danger progress-striped active" style="margin-bottom: 0; width: 500px;"> <div class="bar" style="width: 0%;"></div> </div> </div> </div> <div class="well well-large" class="th"> <b>Ник:</b> killer <br /> <b>IP Адрес:</b> 151.0.44.203<br /> <b>Причина:</b> aim bleatb<br /> <b>Добавлен:</b> 21.08.2013 [13:23]<br /> <b>Истекает:</b> <span style="font-style:italic;font-weight:bold;color:red">Никогда</span><br /> <b>Забанен админом:</b> Nafan9<br /> <b>Последний ник:</b> killer<br /> <b>Последний IP Адрес:</b> 151.0.44.203<br /> <b>Последний визит:</b> 21.08.2013 [13:23]<br /> <b>Местонахождения :</b> Italy </div> <div class="alert alert-info" style="padding: 8px 15px 8px 14px;"> <a href="admin.php?do=bans&edit=49" class="btn btn-primary"><i class="icon-pencil"></i> Редактировать</a> <a href="admin.php?do=bans&delete=49" style="float: right;" class="btn btn-danger"><i class="icon-trash"></i> Удалить</a> </div> '. $data .' </div> <div class="modal-footer"> <a href="__pfcs.ru/gounban" class="btn btn-danger" style="float: left;">Заявка на Unban</a> <a href="#" class="btn btn-inverse" data-dismiss="modal">Закрыть</a> </div> </div> </tbody> </table> </center>'; } ?> и стандартный который я еще не менял <?php if (!defined('SELL_SCRIPT')) {header("Location: ./"); die();} $cipher = "rijndael-256"; $mode = MCRYPT_MODE_CBC; function test_db_config() { global $cfgDbHost, $cfgDbUsername, $cfgDbPassword,$cfgDbTableAccounts,$cfgDbName,$fields; $database = @mysql_connect ( $cfgDbHost, $cfgDbUsername, $cfgDbPassword ); //$database = @mysql_connect ( $cfgDbHost, "root", "" ); if ($database) { // соединились, врубаем кодировку utf8 if (function_exists('mysql_set_charset')) { mysql_set_charset("utf8"); } else { mysql_query("SET NAMES utf8"); } // пробуем выбрать базу $result = mysql_select_db ( $cfgDbName, $database ); if (!$result) { showerror ("Не могу открыть базу с данными для работы!<br />".mysql_error()); die(); } else {// таблица найдена. проверяем наличие таблицы $r = mysql_query("SELECT 1 FROM `".$cfgDbTableAccounts."` WHERE 0"); if (!$r) { // Таблица не существует showerror ("Таблица с аккаунтами отсутствует!"); die(); } else {// тестим поля if (is_array($fields)) { foreach ($fields as $field=>$data) { // проверяем существование полей в таблице: $r = mysql_query("SELECT `".$field."` FROM `".$cfgDbTableAccounts."` WHERE 0"); if (!$r) { showerror ("В таблице данных отсутствует поле ".$field."!"); die(); } } } else { showerror ("В конфигурации не задан список полей таблицы!"); die(); } } } } else { showerror ("Ошибка соедиения с сервером базы данных!<br />".mysql_error()); die(); } } function showerror ($msg) { ?> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "__www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>Критическая ошибка!</title> <style type="text/css"> .rounded-corner { css-border-radius: 5px; -webkit-border-radius: 5px; -moz-border-radius: 5px; } .title-text { vertical-align: top; } #main-content { font-family:Arial,sans-serif; margin-top: 150px; margin-left: auto; margin-right: auto; position: relative; width: 650px; } #error-message { text-align: center; font-size: 12px; font-weight: bold; color: #666; background-color: #FFC; margin-top: 50px; padding: 12px 0; border: 1px solid #FFCC05; } #logo { float: left; padding: 0 20px; border-right: 1px solid #CCC; } #links { text-align: center; margin-top: 10px; font-size:11px; line-height:13px; border:1px; } #copynotice { margin: 20px 0; text-align: center; font-size: 11px; } </style> </head> <body> <div id="main-content"> <div id="error-message" class="rounded-corner"> <div id="logo"> <a href="/"><img src="./img/logo.png" border=0/></a> </div> <?php echo $msg;?> <div style="clear:both;"></div> </div> <div id="links"> <a href="./index.php">Главная</a> </div> <div id="copynotice"> © 2011 Amx-Admin </div> </div> </body> </html> <?php } function test_ssh_function() { if (!extension_loaded('ssh2')) { showerror ("Библиотека php для работы с SSH отсутствует!"); die(); } } function error_msg_format($msg) { return '<div id="error-message" class="rounded-corner">'.$msg.'</div>'; } function info_msg_format($msg) { return '<div id="info-message" class="rounded-corner">'.$msg.'</div>'; } function upload_config ($server,$config_text) { global $gameservers,$info_msg,$error_msg; // Имена файлов // создаем временный файл $local_tmp_configfile = tempnam("tmp", ""); if ($local_tmp_configfile===false) { $error_msg = "Внутренняя ошибка генерации конфигурации (возможно недоступен временный каталог)"; return; } $handle = fopen($local_tmp_configfile, "w"); if (!$handle) { $error_msg = "Внутренняя ошибка генерации конфигурации (возможно он недоступен для записи)"; return; } fwrite($handle, $config_text); fclose($handle); $remote_file = 'users.ini'; // Открытие соединения $conn_id = ftp_connect($gameservers[$server][0]); if ($conn_id){ // Авторизация $login_result = ftp_login($conn_id, $gameservers[$server][1], $gameservers[$server][2]); if ($login_result) { // переходим в папку $chdir = ftp_chdir($conn_id, $gameservers[$server][3]); if ($chdir) { // Загрузка файла $server_file и сохранение его как $local_file if ($res = ftp_put($conn_id, $remote_file, $local_tmp_configfile, FTP_BINARY)) { $info_msg .= "Файл конфигурации успешно загружен на ".$server."<br />"; // проверяем что есть необходимость обновления юзеров if (isset($gameservers[$server][6],$gameservers[$server][7],$gameservers[$server][8]) && !( empty($gameservers[$server][6]) || empty($gameservers[$server][7]) || empty($gameservers[$server][8]) )) { list($addr,$port) = explode(":",$gameservers[$server][6],2); if (isset($addr,$port) && !empty($addr) && !empty($port)) { //error_reporting(E_ERROR | E_WARNING | E_PARSE); error_reporting(E_ERROR); //connect to current server $rcon_server = new Rcon(); //build connection to Gameserver $pass=$gameservers[$server][7]; $rcon_server->Connect($addr, $port, $pass); $command = "amx_reloadadmins"; $result = $rcon_server->RconCommand($command); //close connection $rcon_server->Disconnect(); // if ($result) { preg_match("/[AMXX] Loaded (d+)+ admins? from file/u",$result,$admins); if (isset($admins[1]) && !(empty($admins[1]) && $admins[1]!=="0")) { $info_msg .= "Произведена мгновенная перезагрузка списка админов на сервере. всего админов: ".$admins[1]."<br />"; } else { $error_msg .= "<br /> Ошибка мгновенной перезагрузки списка юзеров в игре:<br>".$result; } } else { $error_msg .= "<br /> Ошибка! Не могу соединиться через Rconn с $server для мгновенного обновления списка админов в игре. <br>Вход на сервер будет возможен после смены локации в игре"; } } else { $error_msg .= "<br />Ошибка в адресе сервера при подаче rconn! Сервер: ".$server."."; } } } else { $error_msg = "Ошибка загрузки файла конфигурации! Сервер: ".$server."."; } } else { $error_msg = "Не могу перейти в каталог настроек! Сервер: ".$server."."; } } else { $error_msg = "Ошибка авторизации на FTP во время обновления конфигурации! Сервер: ".$server."."; } ftp_close($conn_id); } else { $error_msg = "Не могу подключиться к серверу для обновления конфигурации! Сервер: ".$gameservers[$server][3]."."; } // удаляем временный локальный файл конфига unlink($local_tmp_configfile); } function format_serverlist($servers,$current,$check_post_ok) { if (!is_array($servers) || count($servers)<1) { return "<b>Серверов пока нет</b>"; } $list = ""; if (empty($current) || !$check_post_ok) { foreach ($servers as $name=>$serv) { $sel = ""; if ($current==$name) { $sel = ' selected="selected"'; } $list .= " <option".$sel.">".$name."</option>rn"; } } else { $list = " <option>".$current."</option>rn"; } return "<select name='selected_server'>rn".$list."</select>rn"; } function format_price_list($prices,$current) { if (!is_array($prices[$current]) || count($prices[$current])<1) { return " <b>Тарифов на этом сервере пока нет</b>"; } $list = ""; foreach ($prices[$current] as $price) { $list .= " <option>".$price[2]."</option>rn"; } return "<select name='selected_price'>rn".$list."</select>rn"; } function format_config_options() { global $admin_options, $admin_options_disabled, $admin_login_acc_config, $admin_login_options_disabled; // получаем настройки для админа $admin_acc_config = ""; foreach ($admin_options as $key=>$descr) { if (isset($_POST["adm_opt_".$key]) && !empty($_POST["adm_opt_".$key]) && !in_array($key,$admin_options_disabled)) { $admin_acc_config .= $key; } } // получаем настройки для логина $admin_login_acc_config = ""; foreach ($admin_login_options as $key=>$descr) { if (isset($_POST["adm_opt_".$key]) && !empty($_POST["adm_opt_".$key]) && !in_array($key, $admin_login_options_disabled)) { $admin_login_acc_config .= $key; } } return array($admin_acc_config,$admin_login_acc_config); } function generate_config($server) { global $gameservers,$cfgDbTableAccounts; // считываем из базы действующие акки для этого сервера $sql = "SELECT `date_pay`, `login`, `pass`, `options`, `access_flags`, `days_count` FROM ".$cfgDbTableAccounts." WHERE `server`='".$server."' AND `activated`=1"; //var_dump($sql); $select = mysql_query($sql); if (mysql_num_rows($select) > 0) { $config = ""; while ($row = mysql_fetch_assoc($select)) { if (($row[date_pay]+$row[days_count]*3600*24)>time() || $row[days_count]==0) { $config .= '"'.$row[login].'" "'.$row[pass].'" "'.$row[options].'" "'.$row[access_flags].'"'."rn"; } } } return $config; } function show_tariffs() { global $gameservers,$prices; $tarifs = ""; foreach($gameservers as $server=>$conf) { if (is_array($prices) && is_array($prices[$server]) && count($prices[$server])>0) { $temp_tarifs = ""; foreach ($prices[$server] as $curr_tarif) { $temp_tarifs .= ' '.$curr_tarif[2].','; } $tarifs .= "<a class='plugins' href='./mon.php?serv=".$conf[6]."'><b><u>".$server."</u></b></a> ".(!empty($conf[6])?('('.$conf[6].')'):'')." -".$temp_tarifs."<br />rn"; } else { $tarifs .= "<b>".$server."</b> - тарифов пока нет<br />rn"; } } return $tarifs; } class XMLParser { var $path; var $result; function cleanString($string) { return trim(str_replace("'", "'", $string)); } function XMLParser($encoding, $data) { $this->path = "$this->result"; $this->index = 0; $xml_parser = xml_parser_create($encoding); xml_set_object($xml_parser, &$this); xml_set_element_handler($xml_parser, 'startElement', 'endElement'); xml_set_character_data_handler($xml_parser, 'characterData'); xml_parse($xml_parser, $data, true); xml_parser_free($xml_parser); } function startElement($parser, $tag, $attributeList) { $this->path .= "->".$tag; eval("$data = ".$this->path.";"); if (is_array($data)) { $index = sizeof($data); $this->path .= "[".$index."]"; } else if (is_object($data)) { eval($this->path." = array(".$this->path.");"); $this->path .= "[1]"; } foreach($attributeList as $name => $value) eval($this->path."->".$name. " = '".XMLParser::cleanString($value)."';"); } function endElement($parser, $tag) { $this->path = substr($this->path, 0, strrpos($this->path, "->")); } function characterData($parser, $data) { if (strlen($data = XMLParser::cleanString($data))) eval($this->path." = '$data';"); } } // Шифрование данных function encrypt($data, $key, $cipher, $mode) { return (string)base64_encode ( mcrypt_encrypt ( $cipher, substr (md5 ($key) , 0,mcrypt_get_key_size ($cipher, $mode) ) , $data, $mode, substr (md5 ($key), 0, mcrypt_get_block_size ($cipher, $mode)) ) ); } // Дешифрование данных function decrypt($data, $key, $cipher, $mode) { return (string) mcrypt_decrypt ( $cipher, substr(md5($key),0,mcrypt_get_key_size($cipher, $mode)), base64_decode($data), $mode, substr(md5($key),0,mcrypt_get_block_size($cipher, $mode)) ); } function acc_list() { global $cfgDbTableAccounts; $accounts = array(); $sql = "SELECT `login` FROM `".$cfgDbTableAccounts."`"; $select = mysql_query($sql); if (mysql_num_rows($select) > 0) { while ($row = mysql_fetch_assoc($select)) { $accounts[] = $row['login']; } } return $accounts; } function get_logintype ($access_flags,$type=0) { if (stripos($access_flags,"a")!==false) { $login_type = "login_pass"; $login_type_txt = "паролю"; } elseif (stripos($access_flags,"d")!==false && stripos($access_flags,"e")!==false) { $login_type = "IP"; $login_type_txt = "IP"; } elseif (stripos($access_flags,"c")!==false && stripos($access_flags,"e")!==false) { $login_type = "steamid"; $login_type_txt = "SteamID"; } else { $login_type = "login_pass"; $login_type_txt = "паролю"; } if ($type==0) { return $login_type; } else { return $login_type_txt; } } function format_acc_edit_form($user_info) { $login_type = get_logintype($user_info["access_flags"]); global $gameservers; return '<form method="post" action=""> <input type="hidden" name="account_edit_num2" value="'.$user_info[userid].'"> <table cellpadding="4" width="1000px" cellspacing="0" style="padding:2px; border:2px dashed #cccccc;"> <tr align="center"> <td width="15%"><b>Логин / IP-адрес / SteamID:</b></td> <td width="15%"><b>Пароль:</b></td> <td width="12%"align="left"><b>Тип авторизации:</b></td> <td width="10%"><b>Права аккаунта:</b></td> <td width="10%"><b>Cервер:</b></td> <td width="10%"><b>Эл. почта:</b></td> </tr> <tr valign="top"> <td ><input type="text" name="admin_login" value="'.$user_info[login].'" size="25"></td> <td ><input type="text" name="admin_pass" value="'.$user_info[pass].'" size="20"></td> <td rowspan="2"> <input type="radio" name="logintype" value="loginpass" '.($login_type == "login_pass"?'checked="checked"':'').' /> логин и пароль<br /> <input type="radio" name="logintype" value="byIP" '.($login_type == "IP"?'checked="checked"':'').' /> по IP-адресу<br /> <input type="radio" name="logintype" value="SteamID" '.($login_type == "steamid"?'checked="checked"':'').' /> по SteamID </td> <td ><input type="text" name="admin_rights" value="'.$user_info[options].'" size="20"></td> <td>'.format_serverlist($gameservers,$user_info[server],false).' </td> <td ><input type="text" name="email" value="'.$user_info.'" size="20"></td> </tr> <tr align="center"> <td><b>Акк на <input type="text" name="days" value="'.$user_info[days_count].'" size="5"> дней</b></td> <td><b>Цена:</b> <input type="text" name="price" value="'.$user_info[account_price].'" size="5"></td> <td colspan="2" align="left"><input type="checkbox" name="activate" '.($user_info[activated]=="1"?'disabled="disabled" checked="checked"><b> аккаунт активирован</b>':"><b> активировать аккаунт</b>").' <br /><input type="checkbox" name="paydate_update"><b> обновить дату оплаты (акк оплачен сейчас):</b></td> <td align="center" > <input type="submit" name="save" value="Обновить акк" class="button" style="border:7px groove #0000ff;"> </td> </tr> <tr> <td colspan="6">Допполнительные контакты для связи (ICQ, Skype, другое), пожелания админу, примечания:<br /><input class="form_off" type="text" onFocus="this.className='form_on'" onBlur="this.className='form_off'" name="comment" value="'.$user_info[comment].'" style="width: 100%;"></td> </tr> <tr> <td colspan="6" align="center" > <input onclick = "return confirm('Точно удалить этот акк?')" type="submit" name="delete" value=" Удалить акк " class="button" style="border:7px groove #ff0000;"> </td> </tr> </table></form>'; } function format_acc_line($acc,$i=0) { global $inv_id; $login_type_txt = get_logintype($acc["access_flags"],1); $end_acc = $acc ["date_pay"]+3600*24*$acc ["days_count"]; $color = (($i % 2)==0)?"#FFFFFF":"#E8EEF7"; if (isset($inv_id) && $inv_id == $acc["userid"]) { $color = "#AAE8AA"; } return '<tr align="center" bgcolor="'.$color.'" onclick="edit(''.$acc['userid'].'')">'."rn". " <td> ".date('d.m.Y',$acc ["date_create"])."</td>rn". ($acc ["date_pay"]!=0?(" <td> ".date('d.m.Y H:i',$acc ["date_pay"])."</td>rn"):" <td>не оплачен</td>"). ($acc ["days_count"]!=0 ? ($end_acc>time() ? ($acc[activated]=="1" ? " <td bgcolor='#44E844'>".date('d.m.Y',$end_acc)."</td>rn" : " <td bgcolor='#999999'>не активен</td>rn" ) : ($acc ["date_pay"]!=0 ? " <td bgcolor='#FF6666'> просрочен</td>rn" : " <td bgcolor='#66FFFF'> не оплачен</td>rn" ) ) : ($acc[activated]=="1" ? " <td bgcolor='#FFFF66'><b>∞</b> никогда</td>" : " <td bgcolor='#999999'>не активен</td>rn" ) ). //($acc ["date_pay"]!=0?($end_acc>time()?(" <td> ".date('d.m.Y',$end_acc)."</td>rn"):(" <td> просрочен</td>rn"))$acc ["date_pay"]==0?" <td>не оплачен</td>":" <td>закончился</td>")). " <td> ".$acc ["account_price"]."</td>rn". " <td> ".$acc ["days_count"]."</td>rn". " <td> ".$acc ["server"]."</td>rn". " <td class='b-fade' title='".$acc ["email"]."'> ".$acc ["email"]."<i class='fade'></i></td>rn". " <td> ".$login_type_txt."</td>rn". " <td> ".$acc ["login"]."</td>rn". " <td> ".$acc ["pass"]."</td>rn". " <td> ".$acc ["options"]."</td>rn". " <td class='b-fade' title='".$acc ["comment"]."' >".$acc ["comment"]."<i class='fade'></i></td>rn". "</tr>rn"; } function format_accounts_table($data) { $curr_date = date('H:i:s, d.m.Yг.',time()); return '<center><h4>Текущие время и дата (МСК): '.$curr_date.'<br />Состояние аккаунтов на серверах:</h4> <form method="post"> <input onclick = "return confirm('Точно надо создать новый акк?')" type="submit" name="create" value=" Создать новый аккаунт " class="button" style="border:7px groove #00ff00;"> </form> <table width="1000px" cellspacing="0" cellpadding="2" border="0" bgcolor="#E8EEF7" class="th"> <caption>щелкните на строке аккаунта, чтобы изменить или удалить его</caption> <tbody> <tr align="center" bgcolor="#C3D9FF"> <td width="7%">заказан</td> <td width="11%">оплачен</td> <td width="7%">кончается</td> <td width="3%">цена</td> <td width="3%">срок</td> <td width="14%">сервер</td> <td width="12%">email</td> <td width="5%">вход по</td> <td width="11%">логин</td> <td width="9%">пароль</td> <td width="14%">опции админа</td> <td width="4%">инф.</td> </tr>'. $data .'</tbody> </table> </center>'; } ?> в первом файле я изменил таблицу на блок. Но не чего не отображается , там я решил вставить тег '.$data.' и тогда отображается но все равно в таблице. надо бы мне найти сам код дата чтобы узнать от туда теги при помощи которых он её создает, вытащить от туда их и вставить в первый файл а именно вот сюда <div class="well well-large" class="th"> <b>Ник:</b> <br /> <b>IP Адрес:</b> <br /> <b>Причина:</b> <br /> <b>Добавлен:</b> <br /> <b>Истекает:</b> <br /> <b>Забанен админом:</b> /> <b>Последний ник:</b> <br /> <b>Последний IP Адрес:</b> <br /> <b>Последний визит:</b> <br /> <b>Местонахождения :</b> </div> помогите пожалуйста! Изменено 25 августа, 2013 пользователем MontiQ Ссылка на комментарий Поделиться на другие сайты Поделиться
MontiQ Опубликовано 25 августа, 2013 Автор Поделиться Опубликовано 25 августа, 2013 что не кто не поможет Ссылка на комментарий Поделиться на другие сайты Поделиться
Pashok(one) Опубликовано 25 августа, 2013 Поделиться Опубликовано 25 августа, 2013 (изменено) нотепад, ошибка в строке. Какой строчки? что пишет? Изменено 25 августа, 2013 пользователем Pashok(one) AUYKGN 1 Ссылка на комментарий Поделиться на другие сайты Поделиться
MontiQ Опубликовано 26 августа, 2013 Автор Поделиться Опубликовано 26 августа, 2013 close theme ! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения