Не могу понять, почему не отображаются и не обрабатываются элементы формы на локальном сервере
<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (test_form())
{
process_form();
}
else
{
show_form();
}
}
function process_form() {
print "Name of detail: ". $_POST["name"];
echo "<br>";
print "Quantity ". $_POST["number_"];
echo "<br>";
print "Size a (m) ". $_POST["size_a"];
echo "<br>";
print "Size b (m) ". $_POST["size_b"];
echo "<br>";
print "Size c (m) ". $_POST["size_c"];
}
function show_form() {
print<<<_HTML_
<form method="POST" action="$_SERVER[PHP_SELF]">
Name: <input type="text" name="name"><br>
Quantity: <input type="number" name="number_"><br>
Size a (m): <input type="number" name="size_a"><br>
Size b (m): <input type="number" name="size_b"><br>
Size c (m): <input type="number" name="size_c"><br>
<input type="submit" value="OK">
</form>
_HTML_;
}
function test_form() {
if ((empty($_POST["name"])) and !preg_match("/^[a-zA-Z-' ]*$/",$name)) {
echo "Invalid input of name";
return false;
}
if ($_POST['number_'] = 0 or is_null($_POST['number_']))
{
echo"The quantity must be at least 1";
return false;
}
if ($_POST['size_a'] = 0 or is_null($_POST['size_a']) or $_POST['size_b'] = 0 or is_null($_POST['size_b']) or $_POST['size_c'] = 0 or is_null($_POST['size_c']))
{
echo"Invalid size";
return false;
}
else
{
return true;
}
}
?>
Ответы (1 шт):
Автор решения: Yurik Gagarin
→ Ссылка
Проблема в самом начале, для того чтобы получить переменную $_SERVER['REQUEST_METHOD'] нужно отправить форму, но форма show_form вызывается только после того как сработает первое условие
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (test_form()) {
process_form();
}
} else {
show_form();
}