Не могу понять, почему не отображаются и не обрабатываются элементы формы на локальном сервере

    <?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();
}
→ Ссылка