Benjamin Schmaus

NAME

WWW::FieldValidator - Provides simple validation of user entered input

SYNOPSIS

OO module that is used to validate input.

DESCRIPTION

This module is used by WWW::Form to perform various validations on input. This document covers using the WWW::FieldValidator module as part of a Form object. In this case, the only thing you need to know how to do is to instantiate WWW::FieldValidators properly. All the validation is handled internally by WWW::Form.

Function Reference

new( $validatorType, $errorFeedback, [$minLength, $maxLength, $regex], [$isOptional] )

Creates a FieldValidator object. $validatorType is used to determine what type of validation will be performed on the input. The following validator types are supported (Note these are constants, the $validatorType param needs to be one of the following values):

  # Input must conform to /^[\w\-\.\+]+@(\w+)(\.([\w\-]+))+$/
  WWW::FieldValidator::WELL_FORMED_EMAIL 
  # Input must be >= a specified string length
  WWW::FieldValidator::MIN_STR_LENGTH 
  # Input must be <= a specified string length
  WWW::FieldValidator::MAX_STR_LENGTH
  # Input must match a user defined regex
  WWW::FieldValidator::REGEX_MATCH
  # Input must pass a user defined subroutine's validation
  WWW::FieldValidator::USER_DEFINED_SUB

  Examples:

  # Create a validator that checks to see if input is a well formed email
  # address
  WWW::FieldValidator->new(
      WWW::FieldValidator::WELL_FORMED_EMAIL,
      'Please make sure you enter a well formed email address'
  );

  # Creates a validator that checks to see if input is well formed only if
  # input is not null (or numm string)
  WWW::FieldValidator->new(
      WWW::FieldValidator::WELL_FORMED_EMAIL,
      'Please make sure you enter a well formed email address',
      $isOptional = 1
  );

  # Creates a validator that checks to see if the input is at least min length
  WWW::FieldValidator->new(
      WWW::FieldValidator::MIN_STR_LENGTH,
      'Please make sure you enter something at least 10 characters long',
      10
  );

  # Creates a validator that checks to see if the input is at least min length
  # only if input is not null or null string
  WWW::FieldValidator->new(
      WWW::FieldValidator::MIN_STR_LENGTH,
      'Please make sure you enter something at least 10 characters long',
      10,
      1
  );

  # Creates a validator that checks to see if the input is less than max
  # length
  WWW::FieldValidator->new(
      WWW::FieldValidator::MAX_STR_LENGTH,
      'Please enter something less than or equal to 5 characters',
      5
  );

  # Creates a validator that checks to see if the input is less than max
  # length only if input is not null or null string
  WWW::FieldValidator->new(
      WWW::FieldValidator::MAX_STR_LENGTH,
      'Please enter something less than or equal to 5 characters',
      5,
      1
  );

  # Creates a validator that checks to see if the input matches the specified
  # regex
  WWW::FieldValidator->new(
      WWW::FieldValidator::REGEX_MATCH,
      'Please make sure you enter a number',
      ^\d+$|^\d+\.\d*$|^\d*\.\d+$'
  );

  # Creates a validator that checks to see if the input matches the
  # specified regex only if input is not null or null string
  WWW::FieldValidator->new(
      WWW::FieldValidator::REGEX_MATCH,
      'If you\'re going to enter anything, please enter a number',
      ^\d+$|^\d+\.\d*$|^\d*\.\d+$',
      1
  );


  # Creates a validator that checks to see if the input is good according to
  # sub ref
  WWW::FieldValidator->new(
      WWW::FieldValidator::USER_DEFINED_SUB,
      'The name you entered already exists',
      \&is_name_unique
  );

  # Creates a validator that checks to see if the input is good according to
  # sub ref only if input is not null or null string
  WWW::FieldValidator->new(
      WWW::FieldValidator::USER_DEFINED_SUB,
      'If you\'re entering a name, enter one that doesn\'t already exist',
      \&is_name_unique,
      1
  );

  # If you use the validator type: USER_DEFINED_SUB, your subroutine will have
  # access to the value of the form input that your validator is assigned to
  Example:
  sub is_name_unique {
      # gets passed in to this sub for you by way of Form module
      my $name = shift;

      if ($names->{$name}) {
          return 0; # name already exists, input is invalid
      }
      else {
          return 1;
      }
  }

If you want to use WWW::FieldValidator outside of WWW::Form it's easy to do. The only method you need to use is validate.

validate($input)

Returns true if $input passes validation or false otherwise.

  Example:

  my $email_validator = WWW::FieldValidator->new(
      WWW::FieldValidator::WELL_FORMED_EMAIL,
      'Please make sure you enter a well formed email address'
  );

  my $params = $r->param();

  if (my $email = $params->{email}) {

      unless ($email_validator->validate($email)) {
          print $email_validator->getFeedback();
      }
  }

getFeedback()

Returns error feedback for a FieldValidator. This can also be called as get_feedback().

SEE ALSO

WWW::Form

AUTHOR

Ben Schmaus

If you find this module useful or have any suggestions or comments please send me an email at perlmods@benschmaus.com.

BUGS

None that I know of, but let me know if you find any.

Send email to perlmods@benschmaus.com

CHANGELOG

July 2, 2003

Code formatting and cleanup.

COPYRIGHT

Copyright 2003, Ben Schmaus. All Rights Reserved.

This program is free software. You may copy or redistribute it under the same terms as Perl itself. If you find this module useful, please let me know.