PHP замечает неопределенный индекс только перед отправкой формы

#php #html #forms

#php #HTML #формы

Вопрос:

Я пытаюсь выполнить простую проверку значений из формы, и я хочу присвоить некоторым переменным значения, введенные пользователем. Я сделал эту форму :

 <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
                <label for="raspuns1"><span class="glyphicon glyphicon-pencil"></span> Raspuns subpunct a</label>
                <input type="text" class="form-control" name="raspuns1" placeholder="Raspuns a"><br>
                <label for="raspuns2"><span class="glyphicon glyphicon-pencil"></span> Raspuns subpunct b</label>
                <input type="text" class="form-control" name="raspuns2" placeholder="Raspuns b"><br>
                <label for="raspuns3"><span class="glyphicon glyphicon-pencil"></span> Raspuns subpunct c</label>
                <input type="text" class="form-control" name="raspuns3" placeholder="Raspuns c"><br>
                <label for="raspuns4"><span class="glyphicon glyphicon-pencil"></span> Raspuns subpunct d</label>
                <input type="text" class="form-control" name="raspuns4" placeholder="Raspuns d"><br>
                <button type="submit" class="btn btn-success glyphicon glyphicon-check"> Verifica răspunsurile</button>
    </form>
  

и это php-код

 <?php 
$corect1="raspunsulcorect";
$corect2="raspunsulcorect";
$corect3="raspunsulcorect";
$corect4="raspunsulcorect";

if(isset($_POST['submit']))
{
$raspuns1=$_POST['raspuns1'];
$raspuns2=$_POST['raspuns2'];
$raspuns3=$_POST['raspuns3'];
$raspuns4=$_POST['raspuns4'];
}

?>
  

Проблема в том, что когда я открываю страницу, она показывает мне

 Notice: Undefined index: raspuns1 in A:XAMPPhtdocsCopieTestetest1-geometrie.php on line 5

Notice: Undefined index: raspuns2 in A:XAMPPhtdocsCopieTestetest1-geometrie.php on line 6

Notice: Undefined index: raspuns3 in A:XAMPPhtdocsCopieTestetest1-geometrie.php on line 7

Notice: Undefined index: raspuns4 in A:XAMPPhtdocsCopieTestetest1-geometrie.php on line 8
  

После нажатия кнопки отправки все в порядке, но если страница открывается в первый раз, это будет показано. Что я делаю не так?
Это первое, если не должно позволять программе проверять переменные

Комментарии:

1. Ваш код и номера строк не совпадают…

2. Я знаю, что номера, отображаемые в уведомлении, не имеют таких имен, как raspuns1 и так далее

Ответ №1:

Продолжайте и добавьте метод, который проверяет, является ли это запросом POST, прежде чем обращаться к суперглобальному файлу $_POST.

Пример:

 function isPost() {
  return strtolower($_SERVER['REQUEST_METHOD']) == 'post';
}
  

В вашем коде (при условии, что вы определили вышеуказанную функцию):

 if(isPost() amp;amp; isset($_POST['submit']))
{
$raspuns1=$_POST['raspuns1'];
$raspuns2=$_POST['raspuns2'];
$raspuns3=$_POST['raspuns3'];
$raspuns4=$_POST['raspuns4'];
}
  

Также проверяйте функции filter_input и filter_var при извлечении значений из суперглобалов $_GET и $_POST.

Комментарии:

1. Я попробовал функцию isPost. Он по-прежнему показывает мне те же ошибки.

2. Так вы все еще видите уведомления даже с запросом GET?

3. ДА. Проблема в том, что в строке 5 указано Неопределенный индекс raspuns1, но в строке 5 у меня нет такой переменной