错误"未定义索引"如果未选中复选框

时间:2015-04-29 13:10:05

标签: php

当我选中复选框时没有错误,但是当我没有选中复选框时,它会给我错误。

 <?php
    if(isset($_REQUEST['btn']))
    {
        $remmber = $_REQUEST['active'];
    if($remmber == "on")
        {  
            echo "Checked";
        }
        else  {$remmber = "";}
    }
    ?>
    <html>
    <form name= "frm" action = "test.php" method = "post" >
    <p>Username
    <input  type = "text" name = "name" value = ""  />
    </p>

    <p>Password
    <input type = "text" name = "password" value = "" />
    </p>

    <p>
    <td colspan = "2"><input type = "checkbox" name = "active" value = "active" />Keep Me Loged In 
    </p>

    <p><input type = "submit" name = "btn" value = "Login" />

    </p>


    </form>
    </html>

3 个答案:

答案 0 :(得分:6)

对于复选框,如果未选中它们,则不会发布它们。因此,请检查发布的数据中是否存在,然后设置on,否则将blank设置为变量。试试 -

if(isset($_REQUEST['btn']))
{
    $remmber = !empty($_REQUEST['active']) ? 'on' : '';
    if($remmber == "on")
    {  
        echo "Checked";
    }
    else 
        $remmber = "";
}

答案 1 :(得分:4)

if($remmber == "on")但您正在使用并指定值value = "active"

  • &#34;上&#34;如果未指定值,则为复选框的默认值。

因此,您需要将其调整为

if($remmber == "active")

编辑(解释)

您获取未定义索引的原因是,一旦您点击提交提交但未勾选该复选框,就会产生该通知。

修改您的代码以进行读取,并检查是否设置了复选框值。

if(isset($_REQUEST['btn']))
{

    if(isset($_REQUEST['active'])){

    $remmber = $_REQUEST['active'];

    if($remmber == "active")
        {  
            echo "Checked";
        }
        else  {$remmber = "";}

    } // closing brace for if(isset($_REQUEST['active']))

}

其他编辑,向用户显示该复选框未设置:

if(isset($_REQUEST['btn']))
{

    if(isset($_REQUEST['active'])){

    $remmber = $_REQUEST['active'];

    if($remmber == "active")
        {  
            echo "Checked";
        }
        else  {$remmber = "";}

    } // closing brace for if(isset($_REQUEST['active']))

    else{ echo "The checkbox was not ticked.";
    }

}

<强>脚注:

  • 您还应该使用条件!empty()作为输入。

  • 您只需检查是否已设置提交和复选框。

在注意到你在另一个答案中留下的评论后:

  

@Barmar我只是将它用于登录页面,我使用复选框来记住用户名和密码。 - Akshat Dhiman

请阅读以下有关堆栈的问答:

它还包含有关密码的有价值信息。

答案 2 :(得分:0)

您只需使用isset

即可
if(isset($_REQUEST['btn']))
{
    $remmber = isset($_REQUEST['active']) ? $_REQUEST['active'] : '';
    if($remmber == "on")
    {  
        echo "Checked";
    }
    else  {$remmber = "";}
}