У меня проблема с N00bish, работая над простой проверкой формы.Неопределенная ошибка переменной (для заполнителя) показана в html-файле, даже если она определена в файле php
Я создал форму (html), которая должна выполнить простую проверку данных при отправке в отдельный файл php.
В html содержится заполнитель для сообщения об ошибке, которое определено в файле php.
Однако, когда я загрузить форму (перед отправкой), я получаю страшный "Примечание: Undefined переменной: fnameError в C: \ XAMPP \ HTDOCS \ практика \ form.html в строке 19" ошибка ,
Но переменная объявлена и инициализирована в файле php ...
Я также попытался добавить ссылку на php-файл в html, используя «include».
Однако, я затем получить другое сообщение об ошибке: «Синтаксическая ошибка: синтаксическая ошибка, неожиданный конец файла в строке»
Файл HTML содержит следующий код:
<!DOCTYPE html>
<html>
<head>
<title>Form Validation</title>
</head>
<body>
<div class="maindiv">
<div class="form_div">
<div class="title">
<h2>Form validation with PHP</h2>
</div>
<form action="action_page.php" method="post" name="form_name" id="form_id" class="form_class">
<h3>Form:</h3>
<span class="error">* required field.</span><br>
<label>First Name:</label>
<input type="text" name="firstname" id="fname" placeholder="First Name" value="" pattern="[a-zA-Z]+" required><br>
<span class="error">* <?php echo $fnameError;?></span>
<label>Last Name:</label>
<input type="text" name="lastname" id="lname" placeholder="Last Name" value="" pattern="[a-zA-Z]+" required><br>
<span class="error">* <?php echo $lnameError;?></span>
<label>Email Address:</label>
<input type="email" name="emailaddress" id="email" placeholder="Email Address" value="" required><br>
<span class="error">* <?php echo $emailError;?></span>
<input type="submit" name="submit" id="submit" value="Submit">
</form>
</div>
</div>
</body>
</html>
И Файл PHP содержит следующий код:
<?php
// Initialize variables to null.
$fnameError = "";
$lnameError = "";
$emailError = "";
// On submitting the form, the below functions will execute.
if(isset($_POST['submit'])){
if(empty($_POST["firstname"])){
$fnameError = "First name is required";
} else {
$fname = test_input($_POST["firstname"]);
// Check firstname contains only letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$fname)) {
$fnameError = "Only letters and whitespace allowed";
}
}
if(empty($_POST["lastname"])){
$lnameError = "Last name is required";
} else {
$lname = test_input($_POST["lastname"]);
// Check firstname contains only letters and whitespace
if (!preg_match("/^[a-zA-Z ]*$/",$lname)) {
$lnameError = "Only letters and whitespace allowed";
}
}
if (empty($_POST["emailaddress"])) {
$emailError = "Email is required";
} else {
$email = test_input($_POST["emailaddress"]);
// check if e-mail address syntax is valid or not
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email)) {
$emailError = "Invalid email format";
}
}
function test_input($data){
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
//php code ends here
?>
Что я здесь делаю неправильно?
Спасибо!
пишут: - ' PHP, если (Исеть ($ fnameError)) {эхо $ fnameError;}>' для каждый –
Проблема решена ?? –