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

Я выполняю задание, в котором я должен использовать отдельные html и php-файлы, но мне трудно понять, как проверять ввод моих форм, поскольку все найденные мной примеры содержат как html, так и php в одном файле.

Я слежу за примером в w3schools: http://www.w3schools.com/php/php_form_validation.asp

Мой w3_example.html:

<!DOCTYPE HTML> <html> <head> <style> .error {color: #FF0000;} </style> </head> <body> <?php // define variables and set to empty values function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } ?> <h2>PHP Form Validation Example</h2> <p><span class="error">* required field.</span></p> <form method="post" action="w3_example.php"> Name: <input type="text" name="name"> <span class="error">* <?php echo $nameErr;?></span> <br><br> E-mail: <input type="text" name="email"> <span class="error">* <?php echo $emailErr;?></span> <br><br> Website: <input type="text" name="website"> <span class="error"><?php echo $websiteErr;?></span> <br><br> Comment: <textarea name="comment" rows="5" cols="40"></textarea> <br><br> Gender: <input type="radio" name="gender" value="female">Female <input type="radio" name="gender" value="male">Male <span class="error">* <?php echo $genderErr;?></span> <br><br> <input type="submit" name="submit" value="Submit"> </form> </body> </html> 

Мой w3_example.php:

 <!DOCTYPE HTML> <html> <head> </head> <body> <?php // define variables and set to empty values $nameErr = $emailErr = $genderErr = $websiteErr = ""; $name = $email = $gender = $comment = $website = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { if (empty($_POST["name"])) { $nameErr = "Name is required"; } else { $name = test_input($_POST["name"]); } if (empty($_POST["email"])) { $emailErr = "Email is required"; } else { $email = test_input($_POST["email"]); } if (empty($_POST["website"])) { $website = ""; } else { $website = test_input($_POST["website"]); } if (empty($_POST["comment"])) { $comment = ""; } else { $comment = test_input($_POST["comment"]); } if (empty($_POST["gender"])) { $genderErr = "Gender is required"; } else { $gender = test_input($_POST["gender"]); } } echo "<h2>Your Input:</h2>"; echo $name; echo "<br>"; echo $email; echo "<br>"; echo $website; echo "<br>"; echo $comment; echo "<br>"; echo $gender; ?> </body> </html> 

Теперь я получаю сообщение об ошибке «Вызов неопределенной функции test_input ()» в этой строке $ name = test_input ($ _ POST ["name"]); в w3_example.php

Просто подсказка! Поскольку вы учитесь, как я могу себе представить, всегда заботитесь о том, где вы учитесь. У w3schools нет хорошего кода качества. Используйте http://php.net/manual/en/tutorial.forms.php из примера, который является официальной документацией PHP. Их образцы кода, комментарии и т. Д. Намного лучше, чем w3schools.

Я снова проверил ваш пример кода:

Создайте 2 файла:

  1. index.html / index.php (в этом примере ему все равно, является ли это формат .html или .php.
  2. handler.php

Вы первый файл: index.html / index.php

 <!DOCTYPE HTML> <html> <head> </head> <body> <h2>PHP Form Validation Example</h2> <form method="post" action="handler.php"> Name: <input type="text" name="name"> <br><br> E-mail: <input type="text" name="email"> <br><br> Website: <input type="text" name="website"> <br><br> Comment: <textarea name="comment" rows="5" cols="40"></textarea> <br><br> Gender: <input type="radio" name="gender" value="female">Female <input type="radio" name="gender" value="male">Male <br><br> <input type="submit" name="submit" value="Submit"> </form> </body> </html> 

Второй файл: handler.php

 <?php // define variables and set to empty values $name = $email = $gender = $comment = $website = ""; if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $website = test_input($_POST["website"]); $comment = test_input($_POST["comment"]); $gender = test_input($_POST["gender"]); } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } echo "<h2>Your Input:</h2>"; echo $name; echo "<br>"; echo $email; echo "<br>"; echo $website; echo "<br>"; echo $comment; echo "<br>"; echo $gender; ?> 

Эта опция покажет ваши входы в форме на другом URL-адресе страницы.

Это будет работать!

Кстати, мне действительно не нравится этот плохой пример кода. Пожалуйста, используйте:

 <?php // define variables and set to empty values $name = $email = $gender = $comment = $website = ""; if (isset($_POST["submit"])){ $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $website = test_input($_POST["website"]); $comment = test_input($_POST["comment"]); $gender = test_input($_POST["gender"]); echo "<h2>Your Input:</h2>"; echo $name; echo "<br>"; echo $email; echo "<br>"; echo $website; echo "<br>"; echo $comment; echo "<br>"; echo $gender; } function test_input($data) { $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $data; } 

вместо

 if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = test_input($_POST["name"]); $email = test_input($_POST["email"]); $website = test_input($_POST["website"]); $comment = test_input($_POST["comment"]); $gender = test_input($_POST["gender"]); }