Aide fonction Post et varriable!

Eléphant du PHP | 68 Messages

24 mars 2012, 05:28

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

Mammouth du PHP | 2278 Messages

24 mars 2012, 08:58

<?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;
....
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

ViPHP
xTG
ViPHP | 7331 Messages

24 mars 2012, 10:40

$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);

Eléphant du PHP | 68 Messages

24 mars 2012, 16:35

Merci beaucoup!
Maintenant j'essai une variable port!

Encore merci!

Eléphant du PHP | 68 Messages

25 mars 2012, 16:53

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

ViPHP
xTG
ViPHP | 7331 Messages

25 mars 2012, 17:50

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.

Eléphant du PHP | 68 Messages

25 mars 2012, 20:02

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

ViPHP
xTG
ViPHP | 7331 Messages

25 mars 2012, 20:21

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. ;)