Перейти к содержимому


Фотография

PHP класс для работы с API MyArena.Ru

MyArena Api API

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 85

#21 BaHeK

BaHeK

    Пользователь

  • Модератор
  • 324 сообщений

Отправлено 15 Декабрь 2013 - 10:47

вот крч решил пробовать сделать мониторинг на api, потому что query часто пишет что сервер выключен.
так вот, перепилить мониторинг оказалось очень легко, я это сделал, но там блин, появлялась большая голова скина (как бы глупо это не звучало)
я думал мб я что накосячил, взял код который с гитхаба, таже хрень
http://casioo.ru/ins...monitoring2.php
большая голова, откуда она чёрт возьми?
 

<table>
    <thead>
        <tr>
            <th><b>Ник</b></th>
            <?php if(isset($players[0]['score'])):?>
            <td><b>Счет</b></td>
            <?php endif;?>
            <?php if(isset($players[0]['time'])):?>
                <td><b>Время</b></td>
            <?php endif;?>
        </tr>
    </thead>
    <tbody>
    <?php
    foreach($Info['playersInfo'] as $player):?>
        <tr>
            <td>
                <?php echo $player['name']?>
		<?echo '<img data-placement="bottom" src="http://casioo.ru/skin.php?minis='.$player['name'].'/25" href="#" rel="tooltip" data-original-title="'.htmlspecialchars($player['name']).'">'?>
            </td>
            <?php if(isset($player['score'])):?>
            <td>
                <?php echo $player['score']?>
            </td>
            <?php endif;?>
            <?php if(isset($player['time'])):?>
            <td>
                <?php echo $player['time']?>
            </td>
            <?php endif;?>
        </tr>
    <?php endforeach;?>
    </tbody>
</table>

Проблема в том, что в массиве игроков одно значение всегда пустое, поэтому ссылка получается такая
https://minotar.net/avatar//25
Делай continue в цикле, если значение в массиве пустое.
<?php if($player['name']=="") continue;?>


#22 Santiago

Santiago

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 5 053 сообщений

Отправлено 15 Декабрь 2013 - 13:52

Поправил класс немного. Добавил вывод IP, порта и дополнительных параметров, отдаваемых сервером. Например таких, как gamemode на сервере Samp или там список плагинов нf сервере MineCraft


  • w1ck3d это нравится

#23 Mattko

Mattko

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 788 сообщений

Отправлено 15 Декабрь 2013 - 13:59

Я мало в этом шарю, хочу задать вопрос.
Сначало нужно MyArenaAPI.php залить на хостинг, а потом уже уже создать файл blablabla.php и туда уже все вносить?
Токен указал, скрипт для примера хотел опробывать выдает ошибку на строку 3.
 



#24 compromiss

compromiss

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 473 сообщений

Отправлено 15 Декабрь 2013 - 14:02

Я мало в этом шарю, хочу задать вопрос.
Сначало нужно MyArenaAPI.php залить на хостинг, а потом уже уже создать файл blablabla.php и туда уже все вносить?
Токен указал, скрипт для примера хотел опробывать выдает ошибку на строку 3.
 

На гитхабе, ссылка на который, все указано.



#25 Semen4ik

Semen4ik

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 313 сообщений

Отправлено 15 Декабрь 2013 - 14:53

Поправил класс немного. Добавил вывод IP, порта и дополнительных параметров, отдаваемых сервером. Например таких, как gamemode на сервере Samp или там список плагинов нf сервере MineCraft

Вот это хорошо, а то я плагины у себя через query выводил.

#26 smile7k

smile7k

    Пользователь

  • Пользователь
  • PipPipPip
  • 394 сообщений

Отправлено 16 Декабрь 2013 - 6:56

Я мало в этом шарю, хочу задать вопрос.
Сначало нужно MyArenaAPI.php залить на хостинг, а потом уже уже создать файл blablabla.php и туда уже все вносить?
Токен указал, скрипт для примера хотел опробывать выдает ошибку на строку 3.
 

~ пример:
<?php
        //Подключение к API Арены.
        include 'MyArenaAPI.php';
	$token = 'тут свой токен';
	$api = new MyArenaAPI($token);
        $info = $api->status();

        //Построение
        $now = $info['curPlayers'];
        $max = $info['maxPlayers'];

        //Вывод информации
        echo "Сейчас на сервере ($now) из ($max) игроков"
        
?>

На счет вывода информации да, конечно стоило бы поработать, а то некоторые моменты смущают, например при выводе некоторых переменных


Сообщение отредактировал smile7k: 16 Декабрь 2013 - 6:59

  • Mattko это нравится

#27 Santiago

Santiago

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 5 053 сообщений

Отправлено 16 Декабрь 2013 - 7:40

На счет вывода информации да, конечно стоило бы поработать, а то некоторые моменты смущают, например при выводе некоторых переменных

Каких переменных? Я в примере уже итак всё разжевал



#28 smile7k

smile7k

    Пользователь

  • Пользователь
  • PipPipPip
  • 394 сообщений

Отправлено 17 Декабрь 2013 - 7:21

А можно ли отправлять команды на сервер в таком виде, да и как в каком виде их вообще отправлять:

 

pex group $gname user add $pname

 

$gname - название группы в Pex

$pname - имя игрока в mc



#29 compromiss

compromiss

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 473 сообщений

Отправлено 17 Декабрь 2013 - 8:34

А можно ли отправлять команды на сервер в таком виде, да и как в каком виде их вообще отправлять:

 

pex group $gname user add $pname

 

$gname - название группы в Pex

$pname - имя игрока в mc

$api->command($command);

$command = "pex user ".$pname." group add ".$gname."";


  • smile7k это нравится

#30 Santiago

Santiago

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 5 053 сообщений

Отправлено 17 Декабрь 2013 - 8:47

$api->command($command);
$command = "pex user ".$pname." group add ".$gname."";

Немножко не так
 
$command = "pex user {$pname} group add {$gname}";
$api->command($command);

  • smile7k и compromiss это нравится

#31 smile7k

smile7k

    Пользователь

  • Пользователь
  • PipPipPip
  • 394 сообщений

Отправлено 17 Декабрь 2013 - 10:05

Спасибо =)
 



#32 Semen4ik

Semen4ik

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 313 сообщений

Отправлено 18 Декабрь 2013 - 10:59

Немножко не так
 

$command = "pex user {$pname} group add {$gname}";
$api->command($command);

$api->command( "pex user {$pname} group add {$gname}" );
сократить путь, как вариант.

Сообщение отредактировал Semen4ik: 18 Декабрь 2013 - 11:00


#33 compromiss

compromiss

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 473 сообщений

Отправлено 18 Декабрь 2013 - 11:32

$api->command( "pex user {$pname} group add {$gname}" );
сократить путь, как вариант.

$api->command($command);

будет удобней.

Ибо можно и
$command = $_POST['command'];



#34 Semen4ik

Semen4ik

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 313 сообщений

Отправлено 18 Декабрь 2013 - 11:37

$api->command($command);
будет удобней.
Ибо можно и
$command = $_POST['command'];

а какая разница что ты пихаешь в команду? пост/гет или $command
$api->command( $_POST['command'] ); или $api->command( $_GET['command'] );
и строк поменьше, и выглядит получше

Сообщение отредактировал Semen4ik: 18 Декабрь 2013 - 11:39


#35 compromiss

compromiss

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 473 сообщений

Отправлено 18 Декабрь 2013 - 12:44

а какая разница что ты пихаешь в команду? пост/гет или $command
$api->command( $_POST['command'] ); или $api->command( $_GET['command'] );
и строк поменьше, и выглядит получше

Речь вообще не шла о том, что лучше, пост или гет.



#36 Santiago

Santiago

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 5 053 сообщений

Отправлено 18 Декабрь 2013 - 14:22

а какая разница что ты пихаешь в команду? пост/гет или $command
$api->command( $_POST['command'] ); или $api->command( $_GET['command'] );
и строк поменьше, и выглядит получше

Перед тем, как что-то куда-то отправлять, это нужно проверять и фильтровать.
Конечно на примере этого класса, можно отправлять всё подряд, но, на будущее. Ты сам видел, как я алерт вывел в твоей панельке, вот от такого и прочего все запросы извне нужно фильтровать, чтобы исключить всякую заразу. Вот по-этому лучше передавать их отдельными переменными. И еще один момент: не желательно вообще напрямую обращаться к запросам.
$_POST['param'] лучше получать как $param = filter_input(INPUT_POST, 'param');
$command1 = htmlspecialchars($_POST['command'], ENT_QUOTES);
$command2 = htmlspecialchars($_GET['command'], ENT_QUOTES);
$api->command( $command1 );
$api->command( $command2 );


#37 Semen4ik

Semen4ik

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 313 сообщений

Отправлено 18 Декабрь 2013 - 15:47

Перед тем, как что-то куда-то отправлять, это нужно проверять и фильтровать.
Конечно на примере этого класса, можно отправлять всё подряд, но, на будущее. Ты сам видел, как я алерт вывел в твоей панельке, вот от такого и прочего все запросы извне нужно фильтровать, чтобы исключить всякую заразу. Вот по-этому лучше передавать их отдельными переменными. И еще один момент: не желательно вообще напрямую обращаться к запросам.
$_POST['param'] лучше получать как $param = filter_input(INPUT_POST, 'param');

$command1 = htmlspecialchars($_POST['command'], ENT_QUOTES);
$command2 = htmlspecialchars($_GET['command'], ENT_QUOTES);
$api->command( $command1 );
$api->command( $command2 );

нет, не в панельке, а в лк, в лк не вывелся.
я показывал на примере отправки команды, я думаю то, что я сам себе не буду портить сервер/сайт и отправлять туда какие-либо <input> и пр.
ко всему выше сказанному, у меня консоль (в новой панельке), идет htmlspecialchars(скачка server.log через ftp), а потом уже, чтение. Так что.. не прокатит, дaже если в игре умник этот алерт в чат отправит, он не откроется)

Речь вообще не шла о том, что лучше, пост или гет.

я показал укороченный пример.

Сообщение отредактировал Semen4ik: 18 Декабрь 2013 - 15:46


#38 compromiss

compromiss

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 1 473 сообщений

Отправлено 18 Декабрь 2013 - 16:05

я показал укороченный пример.

Смысл сказанного научись понимать лучше)



#39 Mattko

Mattko

    Постоянный пользователь

  • Пользователь
  • PipPipPipPipPip
  • 788 сообщений

Отправлено 19 Декабрь 2013 - 15:48

~ пример:
<?php
        //Подключение к API Арены.
        include 'MyArenaAPI.php';
	$token = 'тут свой токен';
	$api = new MyArenaAPI($token);
        $info = $api->status();

        //Построение
        $now = $info['curPlayers'];
        $max = $info['maxPlayers'];

        //Вывод информации
        echo "Сейчас на сервере ($now) из ($max) игроков"
        
?>

На счет вывода информации да, конечно стоило бы поработать, а то некоторые моменты смущают, например при выводе некоторых переменных

 

Спасибо.



#40 xcrazyx

xcrazyx

    Участник

  • Пользователь
  • PipPip
  • 147 сообщений

Отправлено 02 Апрель 2017 - 19:46

Как с помощью этого скрипта сделать обычный мониторинг?

Например я хочу сделать,что б только игроков показывало,типо 3/16 Игроков онлайн,получается нужно файлы заливать на хостинг,потом создать name.php и туда код? 





Темы с аналогичным тегами MyArena Api, API

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных