2016-01-18 4 views
1

У меня проблема с 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 
?> 

Что я здесь делаю неправильно?
Спасибо!

+0

пишут: - '' для каждый –

+0

Проблема решена ?? –

ответ

1

Вы должны сделать две вещи: -

  1. закрыть свой первый if заявление в файле action_page.php.

  2. написать: - <?php if(isset($fnameError)) {echo $fnameError;}?> и сделать то же самое для других двух.

1

Вы не закрыли первый условный код php: if(isset($_POST['submit'])){". Close this with a}, и ваш код кажется хорошим!

+0

приятный, вы правы, он разрешит ошибку синтаксического анализа ... – devpro

+0

Вы получили его на работу? –

+0

Да. в решении A-2-A были решены обе проблемы. –

0

Есть две ошибки в коде:

Parse error: syntax error, unexpected end of file in the line

Вы пропустили брекеты закрытия из if(isset($_POST['submit'])), как другой помощник уже упоминалось.

Notice: Undefined variable: fnameError in C:\xampp\htdocs\practice\form.html on line 19

Вы используете переменную PHP перед инициализацией.

Решение:

  1. Для точки Ist, добавить окончание } перед началом функции.
  2. Для второго пункта переместите код PHP до HTML.
0

1) Как я ясно вижу ошибку

"Notice: Undefined variable: fnameError in C:\xampp\htdocs\practice\form.html on line 19"

Значит, вы имеете имя страницы form.html Так, нормально, вы можете выполнять только PHP код в файле который имеет расширение .php, потому что ваш веб-сервер настроен так же, как для PHP.

Либо

изменение form.html в form.php

Или

Создайте файл с именем .htaccess и поместите в него следующий код, а затем поместить этот файл в вашем корневом каталоге для этого веб-сайта

AddType application/x-httpd-php .html

2) Поместите свой php-код до <form></form> для отображения соответствующей ошибки.

3) Написать

<span class="error">* <?php if(isset($fnameError)) {echo $fnameError;}?></span> 
<span class="error">* <?php if(isset($lnameError)) {echo $lnameError;}?></span> 
<span class="error">* <?php if(isset($emailError)) {echo $emailError;}?></span> 

для не получать

"Notice: Undefined variable:"

4) Вы не закрыты } для if(isset($_POST['submit'])){. Таким образом, закрыть его не получить

Parse error: syntax error

Обновленный код:

<?php 

// 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 
?> 

<!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 if(isset($fnameError)) {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 if(isset($lnameError)) {echo $lnameError;}?></span> 
        <label>Email Address:</label> 
        <input type="email" name="emailaddress" id="email" placeholder="Email Address" value="" required><br> 
        <span class="error">* <?php if(isset($emailError)) {echo $emailError;}?></span> 
        <input type="submit" name="submit" id="submit" value="Submit"> 
       </form> 
      </div> 
     </div> 
    </body> 
</html> 
Смежные вопросы