[RESOLU] Problème de syntaxe

Petit nouveau ! | 2 Messages

27 avr. 2013, 17:58

Bonjour je débute en php et j’espère trouver de l'aide sur ce forum actif :)

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 ?>
En l'attente d'une réponse de votre part
Merci d'avance
David

Mammouth du PHP | 619 Messages

27 avr. 2013, 19:14

Bonjour,

modifie
$dataserver = QueryMinecraft($fichefin['adresse']);
par cela
$dataserver = QueryMinecraft($fichefin['adresse'],$fichefin['port']);
je pense que cela devrai marche

Petit nouveau ! | 2 Messages

27 avr. 2013, 19:38

merci beaucoup ghost sa fonctionne ! :)

Mammouth du PHP | 619 Messages

27 avr. 2013, 20:01

Bonjour,

pas de problème juste pour info
function namefonction ($var =2222){ //si la variale $var et vide elle prend comme valeur 2222
 return $var; 

} 

echo namefonction();//affichera 2222

echo namefonction('123456'); // affichera 123456