Неопределенный индекс в PHP

Возможный дубликат:
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">&nbsp;</td> <td><input name="SUBMIT" type="SUBMIT" id="ADD" value="ADD"></td> </tr> </table> </form> <?php } else { //code here } ?> 

Как удалить ошибку выше? Спасибо.

Solutions Collecting From Web of "Неопределенный индекс в PHP"

Это должно быть уведомление, а не ошибка.

Чтобы исправить это, вам нужно проверить, установлен ли $_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">&nbsp;</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 ?> 

Это тестирование, если индекс установлен

Опции:

  • Отключить предупреждающие сообщения, отредактировав параметр в PHP.ini
  • Добавьте знак @ перед именем переменной, который будет подавлять ошибку на этой конкретной строке.
  • Измените свой код, чтобы использовать isset($_POST['SUBMIT']) прежде чем проверять его.

Из них третий вариант, безусловно, лучший. Вы не должны предполагать, что любая переменная, предоставленная пользователем, будет установлена ​​так, как вы ожидаете; вы всегда должны проверить, что он установлен вообще, а также что он установлен на ожидаемые значения. В противном случае вы можете быть открыты для взлома атак.