Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过PHP从网站上运行Python代码-但如何在按钮弹出后禁用它_Php_Python_Html_Button - Fatal编程技术网

通过PHP从网站上运行Python代码-但如何在按钮弹出后禁用它

通过PHP从网站上运行Python代码-但如何在按钮弹出后禁用它,php,python,html,button,Php,Python,Html,Button,帮助完成以下任务 <?php if(isset($_POST['MEASURE'])) { shell_exec("sudo python /var/www/html/lab/mkdir.py"); } ?> HTML部分 <form method="post" > <input type="submit" value="Start Measuring" name="MEASURE" class="searc

帮助完成以下任务

<?php
    if(isset($_POST['MEASURE']))
    {
        shell_exec("sudo python /var/www/html/lab/mkdir.py");

    }
?>
HTML部分

<form method="post" >       
<input type="submit" value="Start Measuring" name="MEASURE" class="search">
</form>

我尝试使用带有按钮的HTML页面,通过PHP->this works执行Python脚本。。。但是,当我尝试禁用按钮时,单击按钮以避免使用onClick=disableButton多次启动Python脚本;或者类似的脚本将不再执行

使用jQuery,您可以尝试:

<form method="post" >       
    <input type="submit" id="exec" value="Start Measuring" name="MEASURE" class="search">
</form>
[这只允许单击按钮1次。但是如果表单发送到同一页面,它将被重新加载,并且按钮将被启用xD]


祝你好运

您的web服务器的用户可以以root用户身份执行python,而无需密码,但您是否担心在按下按钮时生成一个简单的JS代码段来禁用按钮?老实说,我觉得这是个很糟糕的主意。在解决此问题的安全隐患之前,按钮应该是您最不担心的。你的python脚本做什么?您能否将其设置为可由web服务器的用户执行?难道不能用PHP重写它,这样就可以完全避免shell_exec吗?要正确、安全地阻止用户多次访问某些内容,您必须使用用户的IP地址,这不是最好的方式,因为可以引用多个用户或强制执行cookie会话,这就是如何完成的。如果你正在尝试这么疯狂的东西,按钮、链接和其他可点击的东西是你最不担心的。至少把sudo从Q中删除,在那里看到它也很难看。当然这些都是有效的评论,但是请不要担心这些方面。这是一个单台机器上的测试环境。我只是想知道,当按钮被禁用时,是什么阻止了启动脚本执行的信号的提交。但在不禁用的情况下,它正在运行。
<script>
jQuery(document).ready(function() {
    jQuery('#exec').click(function(event) {
        $(this).html('Please wait...').attr('disabled', 'disabled');
        $(this).closest('form').submit();
    });
});
</script>