Page 1 sur 3
donné plusieurs fonctions a une variable
Posté : 05 août 2013, 11:22
par WENKz
Bonjour, je souhaiterai savoir si il est possible de donner plusieurs fonctions a une variable
par exemple je créer un menu déroulant avec comme choix choix1 et choix2
je souhaiterai que si je prends choix1 par exemple et bien que mon serveur telecharge un fichier
et nommer ma variable
$choix = $choix1 or $choix2;
$choix1 = $_POST['choix1'] , 'http://fichier1.com/fichier1.txt' ;
$choix2 = $_POST['choix2'], 'http://fichier1.com/fichier2.txt ';
et que ma commande ssh2 soit comme ça
ssh2_exec($connection, "mkdir " . $path . " && cd " . $user . " && wget " . $choix);
Re: donné plusieurs fonctions a une variable
Posté : 05 août 2013, 11:42
par sirakawa
Avant toute chose, il faudrait te pencher sur
<select>
</select>
Re: donné plusieurs fonctions a une variable
Posté : 05 août 2013, 11:52
par WENKz
Merci de ta réponse, il faut proceder de cette façon ?
<p><label>Type :</label><select name="choix" id="choix">
<option value="1" name="choix1" id="choix1">choix1</option>
<option value="2"name="choix2" id="choix2">choix2</option>
</select></p>
$choix = $_POST['choix'];
$choix1 = $_POST['choix1'], 'http://fichier1.com/fichier1.txt';
$choix2 = $_POST['choix2'], 'http://fichier2.com/fichier2.txt';
Re: donné plusieurs fonctions a une variable
Posté : 05 août 2013, 13:01
par xTG
Plutôt ainsi :
$choix = $_POST['choix'];
if( $choix == 'choix1' ){
$choix = 'http://fichier1.com/fichier1.txt';
}else if( $choix == 'choix2' ){
$choix = 'http://fichier2.com/fichier2.txt';
}else{
echo 'Choix impossible';
}
Re: donné plusieurs fonctions a une variable
Posté : 05 août 2013, 13:03
par WENKz
Merci je vais essayer
Re: donné plusieurs fonctions a une variable
Posté : 05 août 2013, 13:20
par WENKz
j'ai toujours choix impossible

Re: donné plusieurs fonctions a une variable
Posté : 05 août 2013, 13:36
par yann18
ça doit ressembler à ça:
<select name="choix" id="choix">
<option value="1" id="choix1">choix1</option>
<option value="2" id="choix2">choix2</option>
</select>
et le traitement du formulaire en php:
$choix = $_POST['choix'];
if( $choix == '1' ){
$reponse = 'http://fichier1.com/fichier1.txt';
}else if( $choix == '2' ){
$reponse = 'http://fichier2.com/fichier2.txt';
}else{
echo 'Choix impossible';
}
echo 'vous avez choisi:',$reponse;
après soumission du formulaire, pour vérifier le choix effectué il suffit de faire un debug du tableau $_POST:
$_POST['choix']; //affichera soit 1, soit 2
Re: donné plusieurs fonctions a une variable
Posté : 05 août 2013, 13:39
par WENKz
dans mes log j'ai
unexpected T_CONSTANT_ENCAPSED_STRING
Re: donné plusieurs fonctions a une variable
Posté : 05 août 2013, 13:52
par WENKz
en gros dans mon fichier script.php j'ai
<?php
// $bin = $_POST['bin'];
$path = $_POST['path'];
$user = $_POST['alias'];
$screen = $_POST['screen'];
$choix = $_POST['choix'];
$choix = $_POST['choix'];
if( $choix == '1' ){
$reponse = 'http://fichier1.com/fichier1.txt';
}else if( $choix == '2' ){
$reponse = 'http://fichier1.com/fichier2.txt';
}else{
echo 'Choix impossible';
}
echo 'vous avez choisi:',$reponse;
$test = ssh2_exec($connection, "mkdir " . $user " && cd " . $user . " && wget " . $choix );
if (isset($_POST['go'])) {
echo stream_get_contents($test);
}
?>
et dans mon test.php j'ai
<form method="post" action="script.php">
<fieldset>
<p><label>Alias :</label><input type="text" class="text-medium" name="alias" id="alias" /></p>
<p><label>Type :</label><select name="choix" id="choix">
<option value="1" id="choix1">choix1</option>
<option value="2" id="choix2">choix2</option>
</select></p>
</fieldset>
<fieldset>
<p><label>Exécutable du serveur :</label><input type="text" class="text-medium" name="bin" id="bin" /></p>
<p><label>Répertoire de l'éxécutable :</label><input type="text" class="text-medium" name="path" id="path"/></p>
<p><label>Options de lancement :</label><textarea name="options" id="options"></textarea></p>
<p><label>Nom du screen :</label><input type="text" class="text-medium" name="screen" id="screen"/></p>
</fieldset>
<button type="submit" name="go" class="button" value="" id="go"> Ajouter ce serveur</button> <button type="reset" class="button negative">Reset des champs</button>
</form>
dans mes logs j'ai toujours ce retour d'erreur
PHP Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in 26
en gros il me dit que j'ai un soucis sur
$test = ssh2_exec($connection, "mkdir " . $user " && cd " . $user . " && wget " . $choix );
Re: donné plusieurs fonctions a une variable
Posté : 05 août 2013, 14:00
par WENKz
j'ai enlever l'espace a la fin de
$test = ssh2_exec($connection, "mkdir " . $user " && cd " . $user . " && wget " . $choix );
et maintenant sur ma page script.php j'ai
http://fichier2.com/fichier2.txt
/root
Re: donné plusieurs fonctions a une variable
Posté : 05 août 2013, 14:53
par yann18
les paramètres passés à la fonction ssh2_exec() ne sont pas bons et le pire il y a une mauvaise concaténation dans ta commande. En effet la variable $choix est égal à 1 ou 2 selon le choix alors qu'elle devrait représenter un fichier(fichier1.txt ou fichier2) c-a-d la variable $reponse. Changeons la nommenclature de la variable $reponse en l'appelant $fichier (enfin question de cohérence):
<?php
//!!!il faut toujours vérifier que tu reçois les données envoyées depuis ton formulaire
// $bin = $_POST['bin'];
$path = $_POST['path'];
$user = $_POST['alias'];
$screen = $_POST['screen'];
$choix = $_POST['choix'];
$choix = $_POST['choix'];
if( $choix == '1' ){
$fichier = 'http://fichier1.com/fichier1.txt';
}else if( $choix == '2' ){
$fichier = 'http://fichier1.com/fichier2.txt';
}else{
echo 'Choix impossible';
}
if (file_exists($fichier)) {//on lance la commande que si le fichier existe
$test = ssh2_exec($connection, "mkdir $user && cd $user && wget $fichier");
//on vérifie que la commande s'est bien passée
if($test===false) echo "Echec de la commande mkdir..";
if (isset($_POST['go'])) {
echo stream_get_contents($test);
} else {
echo "Le fichier $fichier n'existe pas.";
}
}
?>
Re: donné plusieurs fonctions a une variable
Posté : 05 août 2013, 14:58
par WENKz
Désolé au fait j'avais trouvé ^^ mais merci quand mm, il ne faut pas faire la commande ssh comme je l'ai faite ?
Re: donné plusieurs fonctions a une variable
Posté : 05 août 2013, 15:30
par WENKz
une question si je fais un mkdir dossier1 mais si il existe deja que je rentre dedans
Re: donné plusieurs fonctions a une variable
Posté : 05 août 2013, 17:31
par yann18
Une question, est ce que ton script fonctionne ?
Désolé au fait j'avais trouvé ^^ mais merci quand mm, il ne faut pas faire la commande ssh comme je l'ai faite ?
$test = ssh2_exec($connection, "mkdir " . $user " && cd " . $user . " && wget " . $choix );
le problème ne vient pas de la commande ssh mais plutôt d'une erreur syntaxique sur la concaténation entre $user et "cd" où tu as omis un point(.).
Avec concaténation, la fonction ssh2_exec aurait pu s'écrire:
$test = ssh2_exec($connection, "mkdir " . $user. " && cd " . $user . " && wget " . $fichier );
PHP sait interpréter une variable située entre guillemets(2) et dans ce cas la concaténation n'est plus obligatoire, ainsi l'écriture sans concaténation devient alors:
$test = ssh2_exec($connection, "mkdir $user && cd $user && wget $fichier ");
une question si je fais un mkdir dossier1 mais si il existe deja que je rentre dedans
dans ce cas il va falloir adapter ton script en fonction de l'existence du répertoire dossier. Et pour ce faire tu as la fonction php
file_exists()
Re: donné plusieurs fonctions a une variable
Posté : 05 août 2013, 17:39
par WENKz
et encore une autre question si je rajoute screen -dmS $user
$test = ssh2_exec($connection, "Screen -dmS $user && mkdir $user && cd $user && wget $fichier );
effectivement j'ai un screen qui se créé mais n’exécute pas les commande et script a l’intérieur et le screen est visible que en faisant ps aux