J'ai récupéré un code php capable d'afficher le nombre de joueurs en ligne sur un serveur minecraft en particulier.
Par contre je souhaiterais le modifier pour qu'il récupère l'adresse IP ainsi que le PORT dans ma base sql.
Toute les informations du config.php sont correctes et fonctionnent parfaitement pour le reste, j'ai donc simplement modifié la ligne 62:
$dataserver = QueryMinecraft(77.111.203.33);
par
$dataserver = QueryMinecraft($fichefin['adresse']); (cela fonctionne parfaitement)
Le soucis est que je souhaiterais faire de même pour que le programme puisse récupérer la valeur du Port : $fichefin['port']
Mais la variable $Port se trouve dans une function et je ne sais pas du tout quelle syntaxe utiliser, en gros j'aimerais remplacer la valeur 25565 par $fichefin['port'] mais ce n'est apparemment pas possible ^^ > erreur de syntaxe.
Voici la ligne en question (ligne 11):
function QueryMinecraft( $IP, $Port = 25565, $Timeout = 2 )
Et voici le code:
Code : Tout sélectionner
<?php
1 /*
2 * Queries Minecraft server
3 * Returns array on success, false on failure.
4 *
5 * Written by xPaw
6 *
7 * Website: http://xpaw.ru
8 * GitHub: https://github.com/xPaw/PHP-Minecraft-Query
9 */
10
11 function QueryMinecraft( $IP, $Port = 25565, $Timeout = 2 )
12
13 {
14
15 $Socket = Socket_Create( AF_INET, SOCK_STREAM, SOL_TCP );
16
17 Socket_Set_Option( $Socket, SOL_SOCKET, SO_SNDTIMEO, array( 'sec' => (int)$Timeout, 'usec' => 0 ) );
18 Socket_Set_Option( $Socket, SOL_SOCKET, SO_RCVTIMEO, array( 'sec' => (int)$Timeout, 'usec' => 0 ) );
19
20 if( $Socket === FALSE || @Socket_Connect( $Socket, $IP, $Port ) === FALSE )
22 {
23 return FALSE;
24 }
25
26 Socket_Send( $Socket, "\xFE\x01", 2, 0 );
27 $Len = Socket_Recv( $Socket, $Data, 512, 0 );
28 Socket_Close( $Socket );
29
30 if( $Len < 4 || $Data[ 0 ] !== "\xFF" )
31 {
32 return FALSE;
33 }
34
35 $Data = SubStr( $Data, 3 ); // Strip packet header (kick message packet and short length)
36 $Data = iconv( 'UTF-16BE', 'UTF-8', $Data );
37
38 // Are we dealing with Minecraft 1.4+ server?
39 if( $Data[ 1 ] === "\xA7" && $Data[ 2 ] === "\x31" )
40 {
41 $Data = Explode( "\x00", $Data );
42
43 return Array(
44 'HostName' => $Data[ 3 ],
45 'Players' => IntVal( $Data[ 4 ] ),
46 'MaxPlayers' => IntVal( $Data[ 5 ] ),
47 'Protocol' => IntVal( $Data[ 1 ] ),
48 'Version' => $Data[ 2 ]
49 );
50 }
51
52 $Data = Explode( "\xA7", $Data );
53
54 return Array(
55 'HostName' => SubStr( $Data[ 0 ], 0, -1 ),
56 'Players' => isset( $Data[ 1 ] ) ? IntVal( $Data[ 1 ] ) : 0,
57 'MaxPlayers' => isset( $Data[ 2 ] ) ? IntVal( $Data[ 2 ] ) : 0,
58 'Protocol' => 0,
59 'Version' => '1.3'
60 );
61 }
62 $dataserver = QueryMinecraft($fichefin['adresse']);
63 if (!is_array($dataserver)) {
64 echo 'Hors ligne';
65 } else {
66 echo '';
67 echo $dataserver['Players'] . '/' . $dataserver['MaxPlayers'];
68 }
69 ?>Merci d'avance
David