Возможный дубликат:
PHP: «Примечание: неопределенная переменная» и «Примечание: неопределенный индекс»
Добрый день!
У меня есть следующая ошибка в моем коде:
<?php if (!$_POST['SUBMIT']){ //ERROR: Undefined index ?> <H2>Add Employee</H2> <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="POST"> <table width="400" border="0" cellspacing="1" cellpadding="2"> <tr> <td width="100">SSN</td> <td><input name="SSN" type="text" id="SSN"></td> </tr> <tr> <td width="100"> </td> <td><input name="SUBMIT" type="SUBMIT" id="ADD" value="ADD"></td> </tr> </table> </form> <?php } else { //code here } ?>
Как удалить ошибку выше? Спасибо.
Это должно быть уведомление, а не ошибка.
Чтобы исправить это, вам нужно проверить, установлен ли $_POST['submit']
:
if(!isset($_POST['submit'])) { ... }
Здесь вы проверяете, что это не так. Это должно быть !isset($_POST['SUBMIT'])
. Это связано с тем, что индекс SUBMIT
не будет установлен, поэтому не будет иметь значение, например true, чтобы передать if(...)
. isset()
проверяет, действительно ли установлен индекс / переменная.
Попробуй это:
<?php if (!isset($_POST['SUBMIT'])){ //ERROR: Undefined index ?> <H2>Add Employee</H2> <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="POST"> <table width="400" border="0" cellspacing="1" cellpadding="2"> <tr> <td width="100">SSN</td> <td><input name="SSN" type="text" id="SSN"></td> </tr> <tr> <td width="100"> </td> <td><input name="SUBMIT" type="SUBMIT" id="ADD" value="ADD"></td> </tr> </table> </form> <?php } else { //code here } ?>
<?php if (!isset($_POST['SUBMIT'])){ //ERROR: Undefined index ?>
Это тестирование, если индекс установлен
Опции:
@
перед именем переменной, который будет подавлять ошибку на этой конкретной строке. isset($_POST['SUBMIT'])
прежде чем проверять его. Из них третий вариант, безусловно, лучший. Вы не должны предполагать, что любая переменная, предоставленная пользователем, будет установлена так, как вы ожидаете; вы всегда должны проверить, что он установлен вообще, а также что он установлен на ожидаемые значения. В противном случае вы можете быть открыты для взлома атак.