Lancer un executable en php - PHP - Programmation
Marsh Posté le 23-11-2006 à 00:08:52
Tu imagines la GIGANTESQUE faille de sécurité que ça constituerait?
désolé mais c'est impossible.
à moins qu'il n'existe une faille dans un navigateur et qu'elle soit exploitable.
Marsh Posté le 27-11-2006 à 21:40:14
Mais bien sûr qu'il est possible d'exécuter un programme externe avec le PHP. Tu peux lancer un film, une calculatrice, etc... N'importe quelle application en fait.
Voici une commande que pmusa semble ne pas connaitre (il y en a d'autres également) :
exec
(PHP 3, PHP 4, PHP 5)
exec -- Exécute un programme externe
Description
string exec ( string command [, array &output [, int &return_var]] )
exec() exécute la commande command.
Liste de paramètres :
command
La commande à exécuter.
output
Si l'argument output est présent, alors ce tableau sera rempli par les lignes retournées par la commande. Les espaces de début et de fin de chaîne, comme \n, ne seront pas inclus dans ce tableau. Il faut noter que si ce tableau contient des éléments, exec() ajoutera les nouvelles lignes à la fin du tableau. Si vous ne voulez pas que les nouveaux éléments soient concaténés, utilisez la fonction unset() avec ce tableau avant de le passer à exec().
return_var
Si l'argument return_var est présent en plus du tableau output, alors le statut de retour d'exécution sera inscrit dans cette variable.
Valeurs de retour
La dernière ligne du résultat de la commande. Pour exécuter une commande et obtenir le résultat sans aucun traitement, il faut utiliser la fonction passthru().
Pour récupérer la sortie de la commande exécutée, assurez-vous de définir et d'utiliser le paramètre output.
Marsh Posté le 27-11-2006 à 21:47:26
set_time_limit(0) en début de script, voir simplement un set_time_limit(2) qui fera que le script s'arretera sans attendre la réponse du programme. Utiliser éventuellement une @exec() afin de ne pas avoir de message d'erreur
Marsh Posté le 27-11-2006 à 21:56:07
oui, tu as raison, la solution du set_time_limit(2) est bien meilleur
Marsh Posté le 28-11-2006 à 13:14:46
je connais cette fonction.
Elle fonctionne très bien en local, mais pas si tu veux la faire executer sur le web. restriction hebergeur?
genre:
|
n'éteindra jamais le PC de mon visiteur. encore heureux...
Quoiqu'il en soit, cette fonction est un vrai danger. Il suffirait que je me debrouille pour faire telecharger un zip contenant jesuisunviruscaché.exe à qqn puis que je lui le fasse discretement executer en lui demandant simplement de cliquer sur un lien... trop facile.
Marsh Posté le 28-11-2006 à 13:18:43
re,
en fait je crois que j'ai pas compris une chose:
exec() execute-t-il l'executable (!) chez le visiteur OU sur la machine qui heberge le site?
dans ce cas, forcément, il faut taper des cmd linux.
Marsh Posté le 28-11-2006 à 13:24:03
voilà qui arrange tout.
Marsh Posté le 04-12-2006 à 13:23:40
Bonjour à toutes et à tous,
Premièrement désolé de n'avoir pas répondu plus tôt à tout vos messages ....
Deuxièmement, et je vais en plein dans le sujet, lorsque j'applique vos conseils : notamment avec exec(), j'ai beau tenté avec différentes méthodes je n'obtiens jamais rien .
Je m'explique j'ai créer un fichier avec ca dans le body :
<?php
if ($_REQUEST['soft']=='toto')
exec('C:\WINDOWS\NOTEPAD.EXE');
?>
<form action="temp.php" method="get">
<input type="hidden" name="soft" value="toto">
<input type="submit">
</form>
et normalement, si j'ai bien tout compris : la Notepad devrait s'ouvrir, mais non rien du tout ne s'ouvre !!
et après moulte et moulte test... je me retourne à nouveau vers vous, les mains vers le haut et cette éternelle question : "Mais...mais qu'est ce que je n'ai donc pas compris???"
Merci par avance pour vos réponse !
Seb
Marsh Posté le 04-12-2006 à 15:12:35
Démarrer -> Panneau de Config -> Outils d'administration -> Services -> Propriétés du service "Apache" -> Onglet Connexion -> Cocher "Autoriser le service à interagir avec le bureau" -> Ok -> Redémarrer le service Apache.
Ensuite dans le PHP :
Code :
|
Et ça roule. Tout était expliqué dans les commentaires de la fonction exec
Marsh Posté le 09-12-2006 à 00:43:59
Code :
|
Voilà une page à mettre sur ton serveur et accessible à tous....
Le meilleur moyen de se faire foutre en l'air sa machine par le premier hacker venu...
Non je plaisante... surtout ne pas mettre, rire.
Marsh Posté le 10-12-2006 à 11:01:34
Ne pas oublier d'activer les register_globals au passage, des fois qu'il n'y ait pas assez de failles de sécurité.
Marsh Posté le 10-12-2006 à 14:09:25
vanadium a écrit : Ne pas oublier d'activer les register_globals au passage, des fois qu'il n'y ait pas assez de failles de sécurité. |
Marsh Posté le 22-11-2006 à 23:16:51
Bonjour à tous !
Voilà je vous expose mon petit problème, je suis entrain de m'amuser à me faire un bureau en php sous windows. Oui un bureau, je n'arrive pas à trouver un thème qui me plait, et les icônes bougeant continuellement dessus, j'ai eu l'idée de me faire mon petit bureau rien qu'à moi grâce à l'option web du bureau.
L'ennui c'est que lorsque je lance une application il m'ouvre un navigateur et me demande si je veux ouvrir ou enregistrer le fichier (de plus, la case : mémoriser ce choix est grisé). Et ce que je voudrais en fait, c'est "sauter" cette étape et arriver automatiquement à l'ouverture du fichier. Genre je clic sur toto.exe je veux qu'il m'ouvre le fichier sans rien me demander de la même manière que si je clic dessus actuellement sur le bureau standard.
Je me suis aussi demandé s'il n'y avait pas la intérêt à lancer le raccourcis windows plutot que lancer le fichier lui même dans ce cas (oui vu que tout ce passe de mon bureau à mon bureau d'une certaine manière).
Je sais que c'est faisable vu que je l'ai vu faire sur des sites intranet, mais je ne mettais pas plus posé la question que ça à l'époque. . .
Enfin voilà, de plus pourquoi en PHP ? je me suis dit que ca serait sûrement mieux...
Donc je reste à votre écoute et à vos conseils !
Merci par avance,
Seb.
ps: oui je suis sous XP (que les linuxiens me pardonnent.... mais j'utilise aussi fédora juste je ne me suis pas encore posé la question pour lui)