Aide syntaxe PHP
Résolu
Bonjour.
J'aimerais que vous m'aidiez à trouver mon erreur dans cette ligne PHP:
Je vous remercie.
J'aimerais que vous m'aidiez à trouver mon erreur dans cette ligne PHP:
<?php if (isset($_POST['value'])) {$value=$_POST['value'];} { exec(('nircmd.exe changesysvolume ['value']'));} else {$value=0;}
?>
Je vous remercie.
9 réponses
-
ModérateurPourquoi tu fermes et ouvres immédiatement les accolades de ton IF ?
-
Parceque je débute en php et que j'ai compris le fonctionnement de ma commande mais je bloque sur la syntaxe ...
J'aimerai éxecuter la commande :
nircmd.exe changesysvolume [valeur en php]
En fait, intégrer une valeur variable dans une même commande.
La valeur est prise selon un input range en html.
le reste du code est:
<form method="post" action="#"> <fieldset> <input style="margin-left:4%;width:82%" type="range" step="10000" name="value" value="10000" min="10000" max="60000" list="accroissement" onchange="this.form.submit()" onclick="this.form.submit()"> <datalist id="accroissement">> <option>10000</option> <option>20000</option> <option>30000</option> <option>40000</option> <option>50000</option> <option>60000</option> <datalist> <input type="hidden" name="f2wt" value=""/> </fieldset> </form>
-
ModérateurBonjour,
Ton if corrigé :if (isset($_POST['value'])) { $value=$_POST['value']; exec("nircmd.exe changesysvolume $value"); }else { $value=0; }
Ou encore plus simplement avec l'écriture ternaire :$value = isset($_POST['value']) ? $_POST['value'] : 0; if($value !=0){ exec("nircmd.exe changesysvolume $value"); }
-
Merci beaucoup.
Sans vouloir remettre tes conaissances en question cette partie du script semble poser problème:
exec("nircmd.exe changesysvolume $value");
En effet le :$value
n'est pas compris par nircmd.exe
Je pense qu'il voit la commande comme si "$valeur" était un nombre, car rien ne se passe. -
J'ai mis ça:
<? $cmd ="nircmd.exe setsysvolume [$value]"; if (isset($_POST['value'])) { $value=$_POST['value']; echo: $cmd ; }else { $value=0; } ?>
Ca ne marche pas, mais ça me semble pourtant correct ? -
Modérateur
$value = !empty($_POST['value']) ? $_POST['value'] : 0; if($value !=0){ $cmd = escapeshellcmd("nircmd.exe setsysvolume ".$value); echo: $cmd //le temps des tests pour savoir ce que contient la ligne de commande exec($cmd, $outputAndErrors, $return_value); // Affichage des erreurs lors de l'appel à la fonction : if(!empty($outputAndErrors)){ echo "<br>outputAndErrors<br>"; print_r($outputAndErrors); } if(!empty($return_value)){ echo "<br>return_value :".$return_value; } }
Je viens de regarder sur le net .. il n'y a pas les crochets visiblement...
j'ai aussi ajouter l'instruction escapeshellcmd qui permet de protéger les caractères spéciaux du Shell
J'ai aussi remplacé ISSET par !EMPTY pour s'assurer que l'utilisateur ne passe pas une valeur "vide"..
Et enfin, j'ai ajouté les variables contenant les éventuelles erreurs et/ou code de retour lors de l'appel au programme
Voir notice : https://www.php.net/manual/fr/function.exec.php -
Tout fonctionne, tu es vraiment fort.
Si j'ai quelque chose qui peut être gênant, mais enfin, rien de grave;
Lorsque je sélectionne la valeur avec la barre, cette dernière revient à zéro lorsque la valeur est envoyé ...
Elle ne reste pas sur la valeur que je veux lui donner.
Mais la commande nircmd fonctionne à merveille !
Si tu sais et que tu as envie de regarder, sinon je te remercie beaucoup.-
ModérateurFacile...
Il faut rebalancer la valeur après le submit :
Bien sûr.. il te faut des VALUE dans tes options.. pour comparer avec la valeur passée dans le POST.
Au passage, tu peux créer tes "option" dans une boucle de 1 à 6
Un truc du genre :<form method="post" action="#"> <fieldset> <input style="margin-left:4%;width:82%" type="range" step="10000" name="value" value="10000" min="10000" max="60000" list="accroissement" onchange="this.form.submit()" onclick="this.form.submit()"> <datalist id="accroissement">> <?php $valeur_post = !empty($_POST['value']) ? $_POST['value'] : NULL; for($i=1;$i<=6;$i++){ $valeur = $i*10000; $selected = $valeur == $valeur_post ? " selected='selected' " : ''; echo "<option value='$valeur' $selected>$valeur</option>"; } ?> <datalist> <input type="hidden" name="f2wt" value=""/> </fieldset> </form> -
Modérateurou alors (je n'ai pas utilisé ce contrôle jusqu'à maintenant.. c'est peut être juste un VALUE à mettre dans l'input :
<?php $valeur_post = !empty($_POST['value']) ? $_POST['value'] : '10000'; ?> <form method="post" action="#"> <fieldset> <input style="margin-left:4%;width:82%" type="range" step="10000" name="value" value="<?php echo $valeur_post;?>" min="10000" max="60000" list="accroissement" onchange="this.form.submit()" onclick="this.form.submit()"> <datalist id="accroissement">> <?php for($i=1;$i<=6;$i++){ $valeur = $i*10000; echo "<option value='$valeur'>$valeur</option>"; } ?> <datalist> <input type="hidden" name="f2wt" value=""/> </fieldset> </form>
-
-
Ta dernière solution fonctionne, un génie !
En tout cas, j'aimerais avoir ton niveau en PHP !
Je te remercie pour ta patience.-
Modérateur
En tout cas, j'aimerais avoir ton niveau en PHP !
Y'a pas de mérite... juste de la pratique :-)
Par contre: Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet
(en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)
Cordialement,
Jordane -
@jordane45"Y'a pas de mérite... juste de la pratique :-) "
Oui ^^ Tu as raison je pense.
"Si la question est résolue..
Merci de ne pas oublier de clôturer le sujet "
Je le fais tout de suite et encore merci.
-
-
Bonsoir.
Jordane45, est ce que tu sais comment on peut grâce à un bouton, copier du texte dans le presse papier de l'utilisateur ?
J'ai essayé avec une fonction "onclick" et une fonction javascript mais rien à faire :/
Il parait que c'est impossible d'après de nombreux site, tu veux bien m'aider ?
Je te remercie.
(ou si quelqu'un d'autre sait) merci.