Bouton changement d'image

Résolu/Fermé
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 - 25 juil. 2016 à 16:23
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 - 25 juil. 2016 à 22:48
Bonjour,

Comment ça va ?

Bon j'ai un site internet que j'ai finis de coder pour la version public. Cette dernière comporte une page d'accueil avec des serveurs de jeux et une image qui annonce si ils sont allumé, éteint ou en maintenance.

La je suis en train de faire une session admins, dans celle ci il y a des boutons reliés aux serveurs en php (shell_exec) qui permettent d'effectuer des interactions.
Genre le bouton éteindre serveurs counter strike va donner : shell_exec('/etc/init.d/css stop')

J'aimerai bien que en cliquant sur ce bouton, que l'image qui est relié au serveur (donc dans la partie public) change. Si on clique sur le bouton arrêté, elle met le serveur en off, sur le bouton allumé, elle met le serveur en on ....

Une idée ? j'ai checké pas mal de forum de js mais je ne trouve pas mon bonheur.

Ca donnerai en gros ça : https://www.w3schools.com/js/tryit.asp?filename=tryjs_intro_lightbulb

Mais d'une autre section qui n'a pas la même feuille de style non plus.

En espérant que vous m'aillez compris car cela commence à devenir compliqué ;)

++ les ccmien(ne)s bisous :D


A voir également:

3 réponses

Pur faire ça il faut qu'il y ait une base de données qui retienne l'état du serveur(on/off).
Et donc changer cet état quand on lance le shell, bref pas grand chose avec javascript car côté client.
0
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 25
25 juil. 2016 à 16:56
Bonjour non il doit avoir possibilité sans base de données mais je n'arrive pas à trouver un non script.
Merci quand même poir ta réponse
0
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 25
25 juil. 2016 à 18:51
Personne d'autre n'a une idée ?
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225
Modifié par gravgun le 25/07/2016 à 19:50
'lut
Comment se présente le script
/etc/init.d/css
? Dispose-t-il d'une option permettant se savoir si le serveur tourne (généralement au travers de l'écriture d'un fichier de PID / "pidfile" lors du lancement, et sa lecture lors de la demande d'état) ?

À défaut, le nom de processus pour chaque serveur de jeu potentiel est-il unique ? (on peut quand même distinguer entre 2 processus de jeux avec le même nom, par ex.
srcds
/Source Dedicated Server me vient en tête, via les paramètres passés au lancement du processus (qui sont conservés par Linux dans
/proc/[PID]/cmdline
) mais c'est plus simple si les noms de processus diffèrent)
from human import idiocy
del idiocy
0
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 25
25 juil. 2016 à 20:02
Ouh la ca ce complique. Tout simplement j'ai un bouton qui excute la commande pour demerrer le serveur. Celui la il fonctionne avec les autorisaitons root apache ... .
Maintenant c'est que j'aimerai c'est que des que l'on clique sur le bouton, sur la page d'accueil du site l'image passe de on, à off, ou maintenance ...

Je suis en train de tester un deuxieme bouton manuel. Ca serait peut etre plus simple pour ce que je veux en faire.

Merci de ta réponse ;)
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225 > nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017
Modifié par gravgun le 25/07/2016 à 20:14
Ça se complique car c'est aussi quelque chose à prendre en compte; avant d'afficher la bonne image ou d'effectuer la bonne action, il faut savoir si le serveur dont on veut alterner l'état fonctionne ou non. Mettre les 2 boutons "Démarrer" et "Arrêter" n'est pas dur ni une idée idiote, ceci dit appuyer sur ces boutons, et sans faire de vérification d'état du serveur avant et après la vraie demande au scripts (ici
/etc/init.d/css
), ne garantis pas que le serveur tourne ou non au final -- ce qui est bête.
L'exemple simple serait que tu modifies la config d'un serveur et qu'il refuse de démarrer à cause d'une erreur de syntaxe. Si le PHP affiche que le serveur est en marche, on est à coté de la réalité.

Mis à part ça, il est possible d'alterner l'image affichée sur ta page avec un petit peu de JavaScript; mais dans ce cas il faut envoyer une requête d'allumage/extinction de serveur et attendre la réponse, ce qui nous ramène non seulement au problème ci-dessus, ainsi qu'à l'écriture d'une page PHP répondant à une requête JS.

Quite à faire simple (au début), je garderai ce comportement synchrone: un lien/bouton "simple" rechargeant la page avec un paramètre demandant le démarrage/arrêt d'un serveur, le script PHP attend que ça soit fini et affiche la bonne image.
0
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 25 > ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021
25 juil. 2016 à 22:08
Oui c'est ce que j'ai fais:
<?php
$output = shell_exec('/etc/init.d/css start');
echo "<pre>$output</pre>";
?>
Mais rajouter quel js pour lui dire que l'image devienne on ou off ou maintenance ?

Je test avec ca la:

<button onclick="document.getElementById('myImage').src='serveur_on.png'">Serveur ON</button>

<img id="myImage" src="" style="width: auto">

<button onclick="document.getElementById('myImage').src='serveur_off.png'">Serveur OFF</button>

<button onclick="document.getElementById('myImage').src='serveur_maintenance.png'">Serveur en Maintenance</button>
0
nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017 25
25 juil. 2016 à 22:13
Me reste plus qu'a trouver comment rajouter ses codes sur l'autre programme php. Pour quand je l'allume manuellement que ca change l'image, quand je l'éteint ... Pas facile surtout que les pages ne sont pas aux meme endroit et ni sur le meme feuille de style mais cela ne devrait pas poser probleme.

Mais je pense que je veux faire trop compliquer
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 225 > nocram18 Messages postés 471 Date d'inscription vendredi 26 avril 2013 Statut Membre Dernière intervention 16 juillet 2017
25 juil. 2016 à 22:34
Dans l'état actuel, tes boutons ne font que changer l'image sur la page ouverte, le serveur ne reçoit aucune requête start/stop de serveur. Il faut que tu contactes une page pour que ça se fasse, soit via un lien, soit via JS et XMLHttpRequest/AJAX.
Tu peux faire ceci; coté PHP (par exemple):
<?php
header('Content-Type: application/json');
$action = $_GET['action'];
switch ($action) {
  case 'start':
    $output = shell_exec('/etc/init.d/css start'); 
    echo json_encode(['status' => 'on', 'output' => $output]);
    break;
  case 'stop':
    $output = shell_exec('/etc/init.d/css stop'); 
    echo json_encode(['status' => 'off', 'output' => $output]);
    break;
  default:
    echo json_encode(['error' => '...']);
    break;
}
?>
et coté JS/HTML:
function gerer_reponse() {
  var json = JSON.parse(this.responseText);
  if (json.status === 'on') {
    document.getElementById('myImage').src = 'serveur_on.png';
  } else if (json.status === 'off') {
    document.getElementById('myImage').src = 'serveur_off.png';
  } else {
    document.getElementById('myImage').src = 'serveur_erreur.png';
  }
}

function faire_action(action) {
  var req = new XMLHttpRequest();
  req.addEventListener('load', reqListener);
  req.open('GET', 'controle_serveur_css.php?action=' + action);
  req.send();
  document.getElementById('myImage').src = 'serveur_inconnu.png';
}
<img id="myImage" src="" style="width: auto">
<button onclick="faire_action('start')">Serveur ON</button>
<button onclick="faire_action('stop')">Serveur OFF</button>
Pas testé, à toi d'adapter. Encore, il manque la chose cruciale qu'est la vérification de l'état. La "maintenance" n'est pas implémentée, tu peux stocker (et donc lire) cette info dans un fichier, par exemple.
0