8795 sujets

Développement web côté serveur, CMS

Bonjour Forumeur !
Je cherche à créer un bouton (qui ressemble à ca :

<input type="button" name="Unmanaged id="UnmanageBtn" value="Unmanaged" onclick="">
) qui puisse me permettre d'éxecuter une fonction php qui ressemble à ca :


function Unmanaged ($class,$nom){
    $data ="unfichier.exe"
    $date="suite de commande ..." 

Cette fonction est appelée dans une autre page.php avec un require("page.php")
voila, si possible sans recharger la page.

J'ai regardé sur internet, et n'ai vu aucune conversation concluante, est il possible d'exécuter un script php une fois la page crée , faut il recharger toute la page ? une partie (incluant la fonction ?) ou alors un autre moyen qu'un bouton .... un lien ?
Bref proposez, je suis tout ouïe Smiley smile

Merci bien
Modifié par dekker (30 Sep 2010 - 15:39)
Modérateur
Bonjour,

Via Javascript, tu peux appeler une page PHP (requête HTTP). Informe-toi sur Ajax.

Tu peux aussi faire très simple en créant un formulaire HTML qui se soumetterait à ta page PHP qui contient ta fonction. Il y aurait un rechargement de page, mais ça peut être suffisant.
Modifié par Tony Monast (30 Sep 2010 - 15:42)
Modérateur
En passant, j'ai édité ma réponse. J'avais proposé au départ de faire un simple lien vers ta page PHP, mais il est préférable de passer en POST plutôt qu'en GET pour ce type d'action. Évidemment, ça dépend de l'application que tu développes.

Tu peux nous en dire plus?
Okay, je ne vois pas DU TOUT comment faire avec Javascript(tu peux me donner un exemple en JS ?), et je ne connais pas du tout Ajax .

par contre ton idée de formulaire serait tout à fait envisageable, comment faire alors pour appeler ma fonction ? un simple lien vers une page php qui ne contient QUE ma fonction ? avec un petit refresh à la clef ? car après , les actions effectuées par cette fonction doit pouvoir se voir sur l'écran)
Yess
en gros cette fonction va ouvrir une boite de commande windows, effectuer une action sur un server (le mettre en pause par exemple) et inscrire dans un tableau (qui doit donc se rafraichir quand on clic) les serveurs ainsi mis en pause.
Modifié par dekker (30 Sep 2010 - 15:48)
En dehors du nombre limite de caractère, je ne connais pas vraiment la différence entre POST et GET, quel interet ici d'utiliser l'un ou l'autre ?
GET va passer les résultats de ta requête par l'adresse URL, ce qui est une faille de sécurité par aisément modifiable par n'importe quelle personne. Et par expérience, on peut forcer une base de donnée par exemple ainsi (pour la détruire ou voler son contenu).

POST va transmettre par un système autre qui n'est pas visible et modifiable par la personne hors du formulaire.
Modérateur
Lothindil a écrit :
GET va passer les résultats de ta requête par l'adresse URL, ce qui est une faille de sécurité par aisément modifiable par n'importe quelle personne. Et par expérience, on peut forcer une base de donnée par exemple ainsi (pour la détruire ou voler son contenu).

POST va transmettre par un système autre qui n'est pas visible et modifiable par la personne hors du formulaire.


Faux, que les données soient passées en GET, en POST ou par Cookie, l'utilisateur peut les modifier. S'il y a une faille de sécurité sur le site, l'un ou l'autre n'y changera rien.

Dekker, en ce moment je suis occupé, mais je reviendrai plus tard pour continuer le sujet.
Administrateur
Lothindil a écrit :
POST va transmettre par un système autre qui n'est pas visible et modifiable par la personne hors du formulaire.

Ce qu'un navigateur envoie, tout développeur peut le recoder dans son propre logiciel Smiley cligne
Ça risque d'être douloureux avec une extension comme Live HTTP Headers qui facilite bien les tests (ou la Web Developer Toolbar avec Form/Convertir les méthodes Get->Post et Post->Get)
ouais, c'est vrai, j'y pensais plus... (je pense trop dans mon cas de jeu en ligne avec surtout des petits jeunes qui n'y connaissent pas grand chose et jouent surtout au bidouillage d'URL et où c'est donc la méthode GET la plus exposé^^)
Modérateur
dekker a écrit :
En dehors du nombre limite de caractère, je ne connais pas vraiment la différence entre POST et GET, quel interet ici d'utiliser l'un ou l'autre ?


En règle générale, une bonne pratique est de limiter la récupération des données au GET, et de réserver le POST pour l'insertion, la modification ou la suppression des données.

Comme tu l'as déjà mentionné, le POST permet d'envoyer plus de données, donc des fichiers (input file), contrairement au GET.

Si tu fais une action via GET (ajout-modification-suppression), les problèmes sont les suivants :

- Le lien sera mémorisé dans l'historique de l'utilisateur. S'il s'agit d'une page qui efface beaucoup de données, ce serait malheureux que l'utilisateur l'exécute par erreur en parcourant son historique.
- Si l'utilisateur a installé une extension dans son navigateur qui préload les pages des liens de la page, les données seront effacées sans même que l'utilisateur en soit conscient
- Cela peut aussi s'avérer une faille de sécurité (cross-site scripting)
Modifié par Tony Monast (30 Sep 2010 - 17:59)
Modérateur
dekker a écrit :

en gros cette fonction va ouvrir une boite de commande windows, effectuer une action sur un server (le mettre en pause par exemple) et inscrire dans un tableau (qui doit donc se rafraichir quand on clic) les serveurs ainsi mis en pause.


Si tu mets ta fonction qui fait tout ça dans une simple page PHP, et que tu appelles cette page avec ton navigateur, est-ce que PHP va attendre que l'exécutable est terminé avant d'afficher la page?

Bref, j'ai besoin de savoir si l'exécution du programme côté serveur est synchrone ou asynchrone.
Hello, je ne comprend pas bien de quoi tu parles, synchrone/asynchrone .... ?
En gros j'ai déjà du utiliser un pgm similaire ( ldap) pour pouvoir s'identifier(recherche dans une base de donnée), la c'est un peu la même chose, mais pour des serveurs, et je dois non pas executer ldap mais une commande "cmd".
bref entre temps j'ai cherché et je me suis dis que je vais lancer la commande cmd avec un chemin absolu du genre :



	function Managed($server,$class){
	
	$data = "C:\WINDOWS\system32\cmd.exe ";
        $data .= "admnstat.exe ";
        $data .= "/c Windows_NetServer ";
        $data .= "/n blablabla";
        $data .= "/a Unmanaged ";
        $data .= "/s off ";
	}



voila, je n'ai pas encore essayé mais c'est le même principe qu'une autre fonction qui marche (celle pour l'identification) .
j'essaye aujourd'hui, mais mon souci donc est son "activation", il faut que je l'integre correctement.
Voila, justement pour l'intégrer je pense lancer cette fonction une fois le formulaire envoyé (en renseignant les variables).
Ma question est donc la suivante, comment appeler cette fonction une fois le formulaire rempli ? comment l'activer en appuyant sur le bouton "envoie" du formulaire, que dois-je renseigner dans le champs " onclick"pour appeler cette fonction afin que ca me rafraichisse mes tableaux (qui sont sur la même page que le formulaire.) ? (oui j'ai posé 3 fois la même question, c'est histoire d'être sur de me faire comprendre Smiley smile
Modérateur
Bonjour,

Tu dois avoir un formulaire HTML dans ta page PHP. Apparemment, c'est déjà le cas. Ce formulaire doit pouvoir être envoyé au serveur (method POST). Ton bouton doit être un bouton de type submit. Lorsque l'utilisateur va cliquer sur celui-ci, le formulaire sera envoyé à ta page PHP. À ce moment, tu peux faire des traitements PHP, dont l'un de ces traitements sera l'exécution de ton programme côté serveur (cmd.exe) avec les paramètres. Après l'exécution du programme en PHP, tu peux faire des requêtes pour récupérer les données à jour et générer le code HTML à retourner à l'utilisateur.

As-tu déjà créé des formulaires HTML avec traitement PHP après, comme un simple formulaire de contact? Ce sera un peu le même principe, sauf qu'au lieu d'envoyer un email, tu vas exécuter un programme côté serveur.

Pour le côté synchrone ou asynchrone, tu peux faire quelques recherches sur Google pour comprendre ce que je veux dire. Sinon, on y reviendra plus tard.