FORUMS


The Form Tools forums are no longer active, but the old posts have been archived here. Please see the Help page on how to get help / report issues.

Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Problem w/server-side validation
#1
I want to make some fields required and validate the e-mail address. After implimenting the code as described in the documentation area, I am receiving an error "inside" the form field before I even submit anything.

Here is my form code:

PHP Code:
<?php
require_once("../formtools/global/api/api.php");
$fields ft_api_init_form_page(2);


// validation time!
$errors = array();
if (isset(
$_POST['submit_application']))
{
$rules = array();
$rules[] = "required,name,Please enter your name.";
$rules[] = "required,city,Please enter your city.";
$rules[] = "required,email,Please enter your email address.";
$rules[] = "valid_email,email,Please enter a valid email address.";
$rules[] = "required,address,Please enter your address.";
$errors validate_fields($_POST$rules);

 
// no errors - great! Now we process the page. The ft_api_process_form does
  // the job of both updating the database and redirecting to the next page
  
if (empty($errors))
  {
    
$params = array(
        
"submit_button" => "submit_application",
        
"next_page" => "thankyou.php",
        
"form_data" => $_POST,
        
"file_data" => $_FILES,
        
"finalize" => true
    
);
    
ft_api_process_form($params);
  }
  
// it failed validation. Update $fields with the latest contents of the form data
  
else 
  {
    
$fields array_merge($_SESSION["form_tools_form"], $_POST);
  }
}



?>
<html>
<head>
<title>application</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <link rel="stylesheet" type="text/css" href="global/styles.css">
</head>
<body background="images/bkg.jpg">
<?php
// if $errors is not empty, the form must have failed one or more validation 
// tests. Loop through each and display them on the page for the user
if (!empty($errors))
{
  echo 
"<div class='error'>Please fix the following errors:\n<ul>";
  foreach (
$errors as $error)
    echo 
"<li>$error</li>\n";
 
  echo 
"</ul></div>"
}
?>

<div id="container">
<table id="Table_01" border="0" cellpadding="0" cellspacing="0">
  <tr>
        <td colspan="3">
            <img src="images/application_01.jpg" width="965" height="141" alt=""></td>
    </tr>
    <tr>
        <td width="61" valign="top" background="images/application_02.jpg">
            <img src="images/application_02.jpg" width="61" height="478" alt=""></td>
      <td width="839" align="left" valign="top" background="images/application_03.jpg">
      <div id="innercontainer">
<form action="<?php echo $_SERVER["PHP_SELF"]?>" method="POST">
          <table width="818" border="0" cellspacing="0" cellpadding="8" background="images/application_03.jpg">
            <tr>
              <td colspan="3"><h1>PERSONAL INFORMATION</h1></td>
              </tr>
            <tr>
              <td width="5">&nbsp;</td>
              <td width="453">Name</td>
              <td width="312"><input type="text" name="name" id="name" value="<?=htmlspecialchars($fields["name"])?>"></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td>Address</td>
              <td><input type="text" name="address" id="address" value="<?=htmlspecialchars($fields["address"])?>"></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td>City</td>
              <td><input type="text" name="city" id="city" value="<?=htmlspecialchars($fields["city"])?>"></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td>State</td>
              <td><input type="text" name="state" id="state"></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td>Zip</td>
              <td><input type="text" name="zipcode" id="zipcode"></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td>Phone Number (must be numbers only, include area code)</td>
              <td><input type="text" name="phone" id="phone"></td>
            </tr>
            <tr>
              <td>&nbsp;</td>
              <td>E-Mail Address</td>
              <td><input type="text" name="email" id="email" value="<?=htmlspecialchars($fields["email"])?>"></td>
            </tr> 


The error I'm getting when I goto this form to start filling it out is:
(this is the name field)
Code:
<br /><b>Notice</b>:  Undefined index:  name in <b>D:\Hosting\4885718\html\application\application.php</b> on line <b>80</b><br />

Line 80 in my form reads:
Code:
<td width="312"><input type="text" name="name" id="name" value="<?=htmlspecialchars($fields["name"])?>"></td>


Any help you can offer would be greatly appreciated.
Reply
#2
Hi Aalsmo,

You'll see those notices when your error reporting is set quite high. This particular message just means that the $fields variable doesn't have a "name" key. No big deal! By default, Form Tools is configured to show ALL errors - even minor notices & warnings like this one.

There's two ways to fix it.
1. Suppress the error by adding a "@" symbol before the variable, like so:
Code:
<td width="312"><input type="text" name="name" id="name" value="<?=htmlspecialchars(@$fields["name"])?>"></td>

(notice the @$fields["name"] bit).

2. Alternatively, you can add the following line to your global/config.php file:
PHP Code:
$g_default_error_reporting 1

That will prevent ALL minor errors like this one from showing up and only show genuine "error" errors.

All the best -

Ben
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)