当我选中复选框时没有错误,但是当我没有选中复选框时,它会给我错误。
<?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>
答案 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"
因此,您需要将其调整为
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
请阅读以下有关堆栈的问答:
它还包含有关密码的有价值信息。
password_hash()
以及prepared statements。答案 2 :(得分:0)
您只需使用isset
if(isset($_REQUEST['btn']))
{
$remmber = isset($_REQUEST['active']) ? $_REQUEST['active'] : '';
if($remmber == "on")
{
echo "Checked";
}
else {$remmber = "";}
}