Отправка результата jscolor в команду shell_exec

Для начала: мои навыки веб-кодирования почти не существуют, я только что сделал немного HTML много лет назад …
И мои первые шаги с php только что сделаны сегодня.

Моя цель: иметь палитру цветов и посылать выбранное значение в качестве аргумента скрипту Python.

Мне удалось использовать библиотеку jscolor picker (http://jscolor.com/examples/) и я также смог запустить скрипты на python с (цветным) аргументом из php.

Моя проблема сейчас:

Как передать цветовую строку (hex-str) в команду exec (LED_color)?

<?php
$LED_color="FFFFFF";

$LED_color=escapeshellarg($LED_color);

if (isset($_POST['button']))
{
$LED_color = $_REQUEST['hex-str'];
echo shell_exec("sudo /home/pi/LEDscripts/color-by-arg.py $LED_color");
}
?><html>
<head>
<title>Basic usage</title>
</head>
<body>

<div style="position:absolute; left:280px; top:10px;">
toString = <span id="hex-str"></span><br />
</div><script src="jscolor.js"></script>

Color: <input class="jscolor {closable:true,closeText:'Close me!',onFineChange:'update(this)'}" value="000000">

<script>
function update(picker) {
document.getElementById('hex-str').innerHTML = picker.toString();
}
</script>

<form method="post">
<p>
<button name="button">Submit color</button>
</p>
</form>

</body>
</html>

Изображения / 1cXRn.png

2

Решение

Ваш ввод палитры цветов нуждается в name атрибут, соответствующий вашему PHP-коду, а также должен находиться внутри <form> элемент.

<?php
if (!empty($_POST["hex-str"])) {
$LED_color = escapeshellarg($_POST["hex-str"]);
echo shell_exec("sudo /home/pi/LEDscripts/color-by-arg.py $LED_color");
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Basic usage</title>
<script src="jscolor.js"></script>
</head>
<body>
<form method="post">
<p>
Color:
<input type="text" name="hex-str" value="000000" class="jscolor" data-jscolor="{closable:true,closeText:'Close me!',onFineChange:'update(this)'}"/>
toString = <span id="hex-str-display"></span>
</p>
<p>
<button type="submit">Submit color</button>
</p>
</form>
<script>
function update(picker) {
document.getElementById('hex-str-display').innerHTML = picker.toString();
}
</script>
</body>
</html>
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]