Php “错误”;未定义索引“;如果未选中复选框
当我选中复选框时,没有错误,但当我没有选中复选框时,它会给我错误Php “错误”;未定义索引“;如果未选中复选框,php,Php,当我选中复选框时,没有错误,但当我没有选中复选框时,它会给我错误 <?php if(isset($_REQUEST['btn'])) { $remmber = $_REQUEST['active']; if($remmber == "on") { echo "Checked"; } else {$remmber = "";} } ?> <
<?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>
用户名
密码
让我登录
复选框如果未选中,则不会过账。因此,请检查它是否存在于发布的数据中,然后将设置为on
,否则将设置为blank
。试试-
if(isset($_REQUEST['btn']))
{
$remmber = !empty($_REQUEST['active']) ? 'on' : '';
if($remmber == "on")
{
echo "Checked";
}
else
$remmber = "";
}
if($remmber==“on”)
但您正在使用并指定一个值value=“active”
- 如果未指定值,“开”是复选框的默认值
if($remmber == "active")
编辑:(解释) 您获得未定义索引的原因是,一旦您点击submit并没有勾选复选框,它将生成该通知 将代码修改为,并检查是否设置了复选框值
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我只是将此用于登录页面,其中我使用复选框来记住用户名和密码阿克沙·迪曼 请阅读以下有关Stack的问答:
- 我希望您也在使用现代散列方法,例如
if(isset($_REQUEST['btn']))
{
$remmber = isset($_REQUEST['active']) ? $_REQUEST['active'] : '';
if($remmber == "on")
{
echo "Checked";
}
else {$remmber = "";}
}
错误发生在行
$remmber=$\u请求['active']上
@Barmar我知道,但是OP使用的是if($remmber==“on”)
没有指定该值,他们使用的是value=“active”
。我很乐意调整或删除我的答案。他的问题是关于“未定义索引”的警告。你的答案很重要,但与他的问题没有直接关系。@Barmar我将测试它,并根据我的发现调整我的答案。谢谢您的输入。@Fred ii-事实上,当复选框被取消选中时,它不在post中,因此一个简单的isset
或empty
应该足以检查,不需要检查字符串值谢谢您的帮助。现在它可以工作了,但当我一直使用if-else时,如果它打开了,那么它将发出回声,否则它将设置$memory=”“。而不是为什么它仍然给出错误。如果($remmber==“on”){echo“Checked”;}否则{$remmber=“”;}您应该解释为什么需要对复选框使用这种方法。@AkshatDhiman查看另一个答案,了解为什么在“上测试==”不起作用。@Barmar我只是将此用于登录页面,我使用复选框来记住用户名和密码。@AkshatDhiman我不确定这与为什么应该测试$remmber==“active”
而不是$remmber==“on”
有什么关系,就像我在回答BOSE中士的类似回答时说的,你应该解释为什么这是必要的。可能重复的