Ошибка «Неопределенный индекс», если флажок не установлен

Когда я устанавливаю флажок, ошибок нет, но когда я не установил флажок, это дает мне ошибки.

<?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> 

Related of "Ошибка «Неопределенный индекс», если флажок не установлен"

Для флажков, если они не отмечены, они не отправляются. Поэтому проверьте, присутствует ли оно в опубликованных данных, затем установите значение, иначе задайте blank значение переменной. Попробуйте –

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

if($remmber == "on") но вы используете и указываете значение value = "active"

  • «on» – значение по умолчанию для флажка, если значение не указано.

Поэтому вам нужно настроить его так, чтобы читать как

 if($remmber == "active") 

Изменить: (объяснение)

Причина, по которой вы получаете неопределенный индекс, заключается в том, что после того, как вы нажмете на submit 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() для ваших входов.

  • Вы проверяете, установлены ли флажок submit и checkbox.


Заметив комментарий, вы оставили в другом ответе:

@Barmar Я просто использую это для страницы входа, где я использую флажок, чтобы запомнить имя пользователя и пароль. – Акшат Дхиман

Пожалуйста, прочитайте следующие вопросы и ответы на стек:

  • Запомнить меня?

Он также содержит ценную информацию о паролях.

  • Надеюсь, вы также используете современные методы хэширования, такие как password_hash() а также подготовленные операторы .

вы можете просто использовать isset

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