Page 1 sur 1

Aide fonction Post et varriable!

Posté : 24 mars 2012, 05:28
par leo45vl
Bonjour,
Je souhaite créé un site qui permet de faire un ping sur un serveur minecraft mais j'ai un petit probleme:
Sur ma page d'accueil j'ai mit

Code : Tout sélectionner

<FORM Method="POST" Action="2.php"> Ip : <INPUT type=text size=20 name=ip><BR> <INPUT type=submit value=Envoyer> <INPUT type=hidden name=afficher value=ok> </FORM> Et sur ma page de traitement( 2.php ) [code]<?php require ('minequery.class.php'); $data = Minequery::query_json ("46.18.94.79"); ?> <!DOCTYPE html> <html> <head> <title>Nowcraft</title> <meta charset="utf-2"> </head> <?php if ($data) { ?> <p></font><font color=#006633>ONLINE </font><BR></b> <p>Joueur connecter: <?php echo $data->playerCount, '/', $data->maxPlayers; ?></p> <ul> <?php foreach ( $data->playerList as $player ) { echo '<li>', $player, '</li>'; } ?> </ul> <?php } else echo '<p>OFFLINE: <span class="offline">Aller sur le forum pour plus d information</span></p>'; ?>








[/code]
A noter que cela est vraiment pas fini ;)
Mais la ligne que je veux modifier est:
$data = Minequery::query_json ("46.18.94.79");
J'ai tester avec
$data = Minequery::query_json ("$ip");
Mais cela ne marche pas!
Comment on doit mettre cette "fonction"??

Merci,
Leo

Re: Aide fonction Post et varriable!

Posté : 24 mars 2012, 08:58
par sirakawa
<?php
   $ip = isset ($_POST['ip']) ? $_POST['ip']: une_adresse_choisie_par_toi;
   require ('minequery.class.php');
   $data = Minequery::query_json ("46.18.94.79");
et c'est valable pour toutes les variables passées par post....
Il existe aussi extract;
....

Re: Aide fonction Post et varriable!

Posté : 24 mars 2012, 10:40
par xTG
$ip = isset ($_POST['ip']) ? $_POST['ip']: "46.18.94.79"; // la seconde est une adresse par défaut
require ('minequery.class.php');
$data = Minequery::query_json ($ip);

Re: Aide fonction Post et varriable!

Posté : 24 mars 2012, 16:35
par leo45vl
Merci beaucoup!
Maintenant j'essai une variable port!

Encore merci!

Re: Aide fonction Post et varriable!

Posté : 25 mars 2012, 16:53
par leo45vl
Bonjour je cherche un moyen de faire ceci:
J'ai une fonction

Code : Tout sélectionner

public static function query($address, $port = 25566 , $timeout = 30) {
Comme on voit le port est 25566 je voudrais faire une fonction * si 25566 marche pas je prend 25565*
Mais j'ai aucune idéé comment j'ai tester avec une autre virgule mais sa marche pas!


Merci beaucoup!,
Leo

Re: Aide fonction Post et varriable!

Posté : 25 mars 2012, 17:50
par xTG
Il faut modifier la fonction (son code) pour faire ces tests, changer son prototype ne ferra rien.
Si la fonction renvoie un booléen ou un message d'erreur tu peux aussi gérer cela à son appel.

Du genre :
$retour = monObjet::query($address, $port1);
if( $retour === false )
  $retour = monObjet::query($address, $port2);
Bref à toi de voir ce qui te convient le mieux, mais surtout en fonction de comment a été codée la fonction.

Re: Aide fonction Post et varriable!

Posté : 25 mars 2012, 20:02
par leo45vl
Merci mais vais reformuler ma question car je suit limité dans le code:
La page a modifier( je croix )

Code : Tout sélectionner

class Minequery { /** * Queries a Minequery server. * * @static * @param string $address The address to the Minequery server. * @param int $port The port of the Minequery server. * @param int $timeout The time given before the connection attempt gives up. * @return array|bool An array on success, FALSE on failure. */ public static function query($address, $port = 25566, $timeout = 30) { $query = array(); $beginning_time = microtime(true); $socket = @fsockopen($address, $port, $errno, $errstr, $timeout); if (!$socket) { // Could not establish a connection to the server. return false; } $end_time = microtime(true); fwrite($socket, "QUERY\n"); $response = ""; while(!feof($socket)) { $response .= fgets($socket, 1024); } $response = explode("\n", $response); // Server port $query['serverPort'] = explode(" ", $response[0], 2); $query['serverPort'] = $query['serverPort'][1]; //Server Version $query['SVER'] = explode(" ", $response[1], 2); $query['SVER'] = $query['SVER'][1]; //Client Version $query['CVER'] = explode(" ", $response[2], 2); $query['CVER'] = $query['CVER'][1]; // Player count $query['playerCount'] = explode(" ", $response[3], 2); $query['playerCount'] = $query['playerCount'][1]; // Max players $query['maxPlayers'] = explode(" ", $response[4], 2); $query['maxPlayers'] = $query['maxPlayers'][1]; // Player list $query['PLAYERWORLDLIST'] = explode(" ", $response[6], 2); $query['PLAYERWORLDLIST'] = explode(", ", trim($query['PLAYERWORLDLIST'][1], "[]")); // Player list $query['playerList'] = explode(" ", $response[5], 2); $query['playerList'] = explode(", ", trim($query['playerList'][1], "[]")); // Plugin list $query['PLUGINNAMELIST'] = explode(" ", $response[7], 2); $query['PLUGINNAMELIST'] = explode(", ", trim($query['PLUGINNAMELIST'][1], "[]")); // Plugin version list $query['PLUGINVERSIONLIST'] = explode(" ", $response[8], 2); $query['PLUGINVERSIONLIST'] = explode(", ", trim($query['PLUGINVERSIONLIST'][1], "[]")); $query['latency'] = ($end_time - $beginning_time) * 1000; return $query; } /** * Queries a Minequery server using JSON. * * @static * @param string $address The address to the Minequery server. * @param int $port The port of the Minequery server. * @param int $timeout The time given before the connection attempt gives up. * @return object|bool A stdClass object on success, FALSE on failure. */ public static function query_json($address, $port = 25566, $timeout = 30) { $beginning_time = microtime(true); $socket = @fsockopen($address, $port, $errno, $errstr, $timeout); if (!$socket) { // Could not establish a connection to the server. return false; } $end_time = microtime(true); fwrite($socket, "QUERY_JSON\n"); $response = ""; while(!feof($socket)) { $response .= fgets($socket, 1024); } $query = json_decode($response); $query->latency = ($end_time - $beginning_time) * 1000; return $query; } }
Au début on voit

public static function query($address, $port = 25566, $timeout = 30) {
La seul affaire que je veux modifier est $port = 25566 je voudrais mettre 2 port a véfirier.
Est-ce possible?

Merci beaucoup,
Leo

Re: Aide fonction Post et varriable!

Posté : 25 mars 2012, 20:21
par xTG
Tu as tous les éléments pour te dépatouiller avec mon dernier message.
Voir le code ne fait que confirmer ce que je t'expliquais. ;)