CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PHP] Recuperer un $output

EithanR
EithanR
Niveau 10
10 novembre 2015 à 00:01:33

Salut
J'essaye de remplacer le texte d'un $output avec un "if" mais je n'arrive pas vraiment :

<?php
$output = shell_exec('sudo /etc/init.d/csgo status');
if [$output = csgo is DOWN]
{
echo "Le serveur est ouvert"
}
else
{
echo "Le serveur est fermé"
}
?>

En gros si le serveur CS est ouvert il va afficher dans la console "csgo is UP"
et si il est fermé "csgo is DOWN"

Une idée ? Je sais pas comment m'y prendre

Candystand
Candystand
Niveau 10
10 novembre 2015 à 01:23:26

Mets de parenthèses et pas des crochets pour ton if

rangerprice
rangerprice
Niveau 10
10 novembre 2015 à 02:04:22

Utiliser l'opérateur de comparaison == plutôt que l'opérateur qui permet l'affectation d'une valeur à une variable(=).
Et bien faire le if.

<?php
$output = shell_exec('sudo /etc/init.d/csgo status');
if ($output == "csgo is DOWN")
{
echo "Le serveur est ouvert"
}
else
{
echo "Le serveur est fermé"
}
?>

Lepetit32
Lepetit32
Niveau 5
10 novembre 2015 à 12:49:21

Merci pour les réponses, mais ça ne marche toujours pas.

Lepetit32
Lepetit32
Niveau 5
10 novembre 2015 à 12:49:41

oups me suis trompé de compte lol

Chocolayte
Chocolayte
Niveau 73
10 novembre 2015 à 13:01:46

Qu'est-ce qui ne marche pas, exactement ? T'as déjà plus d'erreur de syntaxe, normalement, et le code de rangerprice correspond à ce que tu nous as présenté.

Il a juste inversé les deux valeurs, il aurait dû écrire ça.

<?php
$output = shell_exec('sudo /etc/init.d/csgo status');
if ($output == "csgo is DOWN")
{
    echo "Le serveur est fermé"
}
else
{
    echo "Le serveur est ouvert"
}
?>

Si ça ne va pas, c'est que shell_exec ne retourne pas exactement la chaine string "csgo is DOWN/UP". Fais ça pour vérifier ce que ça retourne réellement, à la majuscule et à l'espace près, serveur ouvert puis fermé, et modifie la condition du if en fonction

<?php
$output = shell_exec('sudo /etc/init.d/csgo status');
echo $output;
?>
Message édité le 10 novembre 2015 à 13:04:53 par Chocolayte
EithanR
EithanR
Niveau 10
10 novembre 2015 à 13:27:42

En fait à la base c'est comme ça que je l'utilisais justement. (echo $output)
Et le $output, quand le serveur est fermé apparait exactement comme je l'ai écrit, avec les majuscules.
https://image.noelshack.com/fichiers/2015/46/1447158319-7d4182a228.jpg
Le smiley à la con c'est juste moi qui l'ai rajouté après.
Et donc vu que le status.php est intégré à l'index, la page reste blanche.

Candystand
Candystand
Niveau 10
10 novembre 2015 à 13:57:09

Peut-être qu'il y a un espace à la fin? un caractère spécial?

Dans tout les cas une autre solution serait tout simplement de voir si ta chaîne contient "DOWN" ou "UP" avec les regex

Message édité le 10 novembre 2015 à 13:58:06 par Candystand
Chocolayte
Chocolayte
Niveau 73
10 novembre 2015 à 17:01:25

T'as la fonction str_pos de mémoire qui te permet de vérifier si ta chaîne contient une autre chaîne (donc si $output contient le mot clé "UP" ou "DOWN").

C'est genre if (str_pos($arg1, $arg2) > 0), faudrait vérifier dans la doc dans quel ordre de placent les variables

Message édité le 10 novembre 2015 à 17:03:03 par Chocolayte
Pseudo supprimé
Pseudo supprimé 10 novembre 2015 à 19:22:20

LES POINTS-VIRGULE !

Le 10 novembre 2015 à 02:04:22 rangerprice a écrit :
Utiliser l'opérateur de comparaison == plutôt que l'opérateur qui permet l'affectation d'une valeur à une variable(=).
Et bien faire le if.

<?php
$output = shell_exec('sudo /etc/init.d/csgo status');
if ($output == "csgo is DOWN")
{
echo "Le serveur est ouvert"
}
else
{
echo "Le serveur est fermé"
}
?>

POINTS-VIRGULES

Le 10 novembre 2015 à 13:27:42 EithanR a écrit :
En fait à la base c'est comme ça que je l'utilisais justement. (echo $output)
Et le $output, quand le serveur est fermé apparait exactement comme je l'ai écrit, avec les majuscules.
https://image.noelshack.com/fichiers/2015/46/1447158319-7d4182a228.jpg
Le smiley à la con c'est juste moi qui l'ai rajouté après.
Et donc vu que le status.php est intégré à l'index, la page reste blanche.

http://www.academie-francancaise.fr/la-base-pour-dabord

Chocolayte
Chocolayte
Niveau 73
10 novembre 2015 à 20:52:25

Ah ouais les points virgules, et je recopie sa bourde

EithanR
EithanR
Niveau 10
13 novembre 2015 à 00:08:04

Ah oui, les virgules c'est vrai que c'est plutôt utile :)
Merci
Par contre j'ai encore un problème, quoi qu'il en soit, il m'affiche "fermé"
(Et je suis bien allé vérifié en SSH)
Sinon, le code final qui est censé marcher :


<?php
$output = shell_exec('sudo /etc/init.d/csgo status');
if ($output = 'csgo is DOWN')
{
echo "Le serveur est fermé";
}
else
{
echo "Le serveur est ouvert";
}
?>
Candystand
Candystand
Niveau 10
13 novembre 2015 à 00:23:12

if ($output == 'csgo is DOWN') t'as pas mis le ==

EithanR
EithanR
Niveau 10
13 novembre 2015 à 00:27:57

Si, j'ai essayé avec et sans, et avec les deux == il me dit qu'il est tout le temps ouvert.

root@VPS2:~# service csgo status
csgo is DOWN

https://image.noelshack.com/fichiers/2015/46/1447370866-87f9708e522.png

Candystand
Candystand
Niveau 10
13 novembre 2015 à 00:44:34

Hmmm je pense que cela vient du fait que tu lances ta command en sudo, vu que tu as besoin de rentrer un mdp il n'y a aucun output, donc tu rentreras toujours dans le else

Dans tous les cas laisse le == , c'est pas du tout la même chose que le =

EithanR
EithanR
Niveau 10
13 novembre 2015 à 00:57:59

Non justement, j'ai fait en sorte qu'il n'y ai pas besoin de mot de passe pour ce script avec l'utilisateur apache2.
Bon bah je vais tenter d'autres trucs. Merci de l'aide en tout cas

Sous forums
  • Aide à l'achat Mac
  • Steam Deck
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Macintosh
  • Hardware
La vidéo du moment