【问题标题】:Storing checkbox value on server side在服务器端存储复选框值
【发布时间】:2015-07-03 07:37:17
【问题描述】:

对于我的家庭自动化项目(使用带有 Apache 服务器和配置网页的 Raspberry Pi),我正在尝试将复选框的设置保存到服务器端的文件中,但我无法让它在我的情况下工作. 将 php 与 fopen() 和 fwrite() 一起使用,我可以将任何字符串存储到文本文件中,这没问题。问题是表单使用 POST,我似乎无法弄清楚如何以这样的方式编写代码:

1) 复选框本身设置为文本文件中当前存在的值(“记住并检索”设置);

2) 将用户刚刚设置的设置写入文件,这在页面加载 (POST) 时发生。

这些操作似乎互相妨碍,因为 php 是服务器端。如果页面是第一次刷新或者访问没有问题,是表单提交后重新加载页面的问题。 我使用哪种方法或语言将复选框的设置保存在服务器端并不重要。

哪种方法可以解决问题?

【问题讨论】:

    标签: php caching checkbox automation iot


    【解决方案1】:

    你能贴出 fopen()、fwrite() 的代码吗?如果您要向该 php 页面发送 POST,那么您可以获取 HTML 元素中包含的消息,类似于:

    <?php
    $message = $_POST['textarea_value_name'];
    ...
    

    【讨论】:

    • 谢谢。这实际上是我现在使用的方法。检索值不是问题,问题在于必须执行每个步骤的逻辑和顺序。
    【解决方案2】:

    您可以通过执行以下操作来设置文件,假设文件仅包含值 1 或 0 是否应设置复选框(在提交表单时调用此脚本):

    if(isset($_POST["mycheckboxname"])){
       file_put_contents('file.txt', '1');
    }
    else{
       file_put_contents('file.txt', '0');
    }
    

    这是为了将复选框以正确的格式显示在屏幕上。在显示复选框表单时使用它。

    $checked = file_get_contents('file.txt');
    echo '<input type="checkbox" name="mycheckboxname" ';
    if($checked=='1') echo 'checked ';
    echo '/>';
    

    确保在创建文件时设置正确的权限,以便 PHP 处理器对其具有写入权限。

    【讨论】:

    • 谢谢,我试过你的代码,但问题仍然存在。写入文件没问题,但是当我刷新页面时,复选框会自动设置为未选中,因为加载页面时, isset($POST["name"]) 不正确。
    • 正如我所说,您必须将代码分成两个脚本。一种在显示站点时执行,另一种用于处理文件的提交。第二个可以例如将用户转发回第一个。然后它应该按预期工作。
    • 啊!这正是我需要的解决方案,甚至没有考虑使用单独的脚本。现在像魅力一样工作:) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-03-29
    • 2019-08-25
    • 2015-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多