在会话中存储表单中的选中复选框

时间:2017-09-19 09:38:52

标签: php session checkbox

如果用户对该框进行了清理,我想在会话中存储一个复选框值。如果是这样,则在重新加载页面后也应检查该框。如果用户取消选中该框,则应销毁该会话并且必须取消选中该框。默认为未选中。

我尝试了不同的代码,但什么都行不通。在我的例子中,总是检查chekbox,即使用户是否嘲笑它。

非常感谢你!

我的php:

session_start();

if( !empty($_POST['debug_on']) ) {
    $_SESSION['debug'] = true;
} else {
    $_SESSION['debug'] = false;

}

我的表格:

<form class="form-inline" name="form" method="post" action="">
<div class="form-group">
<label class="sr-only" for="inlineFormInputGroup">Email</label>
  <div class="input-group mb-2 mr-sm-2 mb-sm-0">
    <div class="input-group-addon">@</div>
    <input type="email" name="email" class="form-control" id="inlineFormInputGroup" placeholder="name@mail.com" value="<?= $email ?>" required >
  </div>
</div>

<div id="debugbox">
<label class="custom-control custom-checkbox mb-2 mr-sm-2 mb-sm-0">
    <input type="checkbox" class="custom-control-input" name="debug_on" id="debugbox" value="1" <?php if($_SESSION['debug'] = true); echo "checked='checked'"; ?>>
    <span class="custom-control-indicator"></span>
    <span class="custom-control-description">Output debug</span>
  </label>
 </div>
<button type="submit" class="btn btn-outline-success">Submit</button>
<br>
<br>

</form>

2 个答案:

答案 0 :(得分:0)

        $refresh = "ok";
        if(!empty($_POST['email'])) 
        {
            $refresh ="";
        } 

<input type="checkbox" class="custom-control-input" name="debug_on" id="debugbox" value="1" <?php if((isset($_SESSION['debug']) && $_SESSION['debug'] == true) || (!empty($refresh)) ) { echo "checked"; } ?> >

答案 1 :(得分:0)

我认为问题在于这一行:echo "checked='checked'"应该是echo 'checked="checked"',但如果它让你满意,我会提出一个完整的解决方案。

试试这个:

session_start();
if(!empty($_POST['debug_on'])) {
    $_SESSION['debug'] = true;
} 
else {
    $_SESSION['debug'] = false;
}

然后在你的HTML中:

<?php print !empty($_SESSION['debug']) && $_SESSION['debug'] == true ? 'checked="checked"' : ''; ?>