【问题标题】:Running Python Code from Website via PHP - but how to disable button after it is puhed通过 PHP 从网站运行 Python 代码 - 但是如何在按下按钮后禁用按钮
【发布时间】:2018-07-27 22:49:52
【问题描述】:

帮助解决以下问题

<?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 执行 Python 脚本 -> 这有效...但是,当我尝试禁用按钮一次单击以避免使用“onClick =”多次启动 Python 脚本时disableButton();" 或类似的脚本将不再执行....

【问题讨论】:

  • 您的 Web 服务器的用户可以在没有密码的情况下以 root 身份执行 python,但是您还在担心制作一个简单的 JS sn-p 以在按下按钮时禁用它?老实说,这对我来说是一个非常糟糕的主意。在您解决此问题的安全隐患之前,该按钮应该是您最不必担心的问题。你的python脚本是做什么的?你不能设置它以便它可以被网络服务器的用户执行吗?难道不能用 PHP 重写,这样你就可以完全避免shell_exec 吗?
  • 要正确和安全地阻止用户多次访问某项内容,您必须使用用户的 IP 地址(不是引用多个用户的最佳方式)或强制执行 cookie 会话(就是这样完毕)。如果您正在尝试如此疯狂的事情,那么按钮、链接和其他可点击项是您最不用担心的。至少从 Q 中删除 sudo,即使在那里看到它也很难看。
  • 当然这些都是有效的 cmets,但是请不要在意这些方面。它是单台机器上的测试环境。我只是想知道当按钮被禁用时,是什么阻止了提交信号以开始执行脚本。但不禁用它就可以正常工作。

标签: php python html button


【解决方案1】:

使用 jQuery 你可以试试:

<form method="post" >       
    <input type="submit" id="exec" value="Start Measuring" name="MEASURE" class="search">
</form>
<script>
jQuery(document).ready(function() {
    jQuery('#exec').click(function(event) {
        $(this).html('Please wait...').attr('disabled', 'disabled');
        $(this).closest('form').submit();
    });
});
</script>

[这仅允许单击 1 次按钮。但是如果表单被发送到同一个页面,它会被重新加载并且按钮会被启用xD]

祝你好运!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多