【问题标题】:Submitting jscolor result to shell_exec command将 jscolor 结果提交给 shell_exec 命令
【发布时间】:2017-02-16 12:42:47
【问题描述】:

首先:我的网络编码技能几乎不存在,我只是在很久以前做过一点 HTML... 我今天才开始使用 php。

我的目标是:拥有一个颜色选择器并将选择的值作为参数发送到 python 脚本。

我设法使用了 jscolor 选择器库 (http://jscolor.com/examples/),并且我还能够使用来自 php 的 (color) 参数运行 python 脚本。

我现在的问题是:

如何将颜色字符串(hex-str)提交给执行命令(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>

【问题讨论】:

    标签: php variables exec jscolor


    【解决方案1】:

    您的颜色选择器输入需要一个 name 属性来匹配您的 PHP 代码,并且还需要在 &lt;form&gt; 元素内。

    <?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>
    

    【讨论】:

    • 感谢您的回复!不幸的是,它仍然无法正常工作。当单击按钮时,始终使用来自LED_colorFFFFFF 的初始值调用脚本。然后颜色选择器跳回到它的初始值000000
    • 也许最后一件事,每次按下按钮时,颜色选择器都会跳回到它的初始值。我想这与页面重新加载有关。有没有办法存储选择器值?
    • value="&lt;?=$LED_color?&gt;" 而不是 value="ffffff"
    猜你喜欢
    • 2017-12-21
    • 2015-08-03
    • 1970-01-01
    • 2014-08-04
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 2011-01-23
    相关资源
    最近更新 更多