#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 у меня нет такой переменной