HTML/PHP 复选框无法正常工作

4

我有一个表单:

<form method="post" action="">
    <p><input type="text" name="login" value="<?php if(isset($login_username)){ echo $login_username; } ?>" placeholder="<?php echo $lang['login_1']; ?>"></p>
    <p><input type="password" name="password" value="" placeholder="<?php echo $lang['login_2']; ?>"></p>

    <div class="options" style="margin: 5;line-height: 1.4;">
        <a onclick="showRegister();"><?php echo $lang['login_4']; ?></a><br>
        <a onclick="lostPassword();"><?php echo $lang['login_5']; ?></a>
    </div>

    <p class="remember_me">
        <label>
            <input type="checkbox" id="remember" <?php if(isset($login_remember)){ if($login_remember == "on"){ echo " checked"; }} ?>><?php echo $lang['login_3']; ?></input>
        </label>
    </p>
    <input type="hidden" id="action" name="action" value="login"></input>
    <p class="submit">
       <input type="submit" value="<?php echo $lang['login_button']; ?>">
    </p>
</form>

当我点击提交按钮时,$_POST返回:数组([login] => 用户名 [password] => 密码 [action] => 登录)
但复选框没有返回值,请有人帮忙吗?
编辑: 我添加了:name="remember" 但仍然不起作用。

@Shannon,我撤销了你的编辑,因为你删除了原帖作者的更新。 - jeroen
2个回答

8
复选框的问题在于,当复选框被选中时,$_POST值才会被设置。如果未被选中,则没有值被提交。因此,您需要在期望的$_POST变量上使用isset()。如果未设置,则复选框未被选中。如果已设置,则可以评估该值。

是的!它可以工作了!非常感谢。你真的救了我的命。 - mlomb
2
不客气,我曾经也遇到过同样的问题,花了我好几个小时才找到解决办法 :-) - Roxxorfreak

7

name 也添加进去。

   <input type="checkbox" id="remember" name="login_remember" <?php if(isset($login_remember)){ if($login_remember == "on"){ echo " checked"; }} ?>><?php echo $lang['login_3']; ?></input>

1
小补充:如果复选框在提交表单时未被选中,则不会出现在 POST 中。 - jeroen
正确。看起来应该是 login_remember 的名称。请使用 isset 来检查它是否被选中。 - cornelb

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接