Headers already sent... where?
<p>Does anyone see how headers could be sent in this script? I am using this script to validate a form. As a result it is causing headers to be sent so when I try to direct a user after implementing this script it causes the normal "Warning: Cannot modify header information - headers already sent" message. Here is the script:</p>

<pre><code>&lt;?php
class ValidatorObj
{
    var $variable_name;
    var $validator_string;
 var $error_string;
} 

/**
* Base class for custom validation objects
**/
 class CustomValidator 
 {
    function DoValidate(&amp;$formars,&amp;$error_hash)
{
    return true;
}
}

/** Default error messages*/
define("E_VAL_REQUIRED_VALUE","Please enter the value for %s");
define("E_VAL_MAXLEN_EXCEEDED","Maximum length exceeded for %s.");
define("E_VAL_MINLEN_CHECK_FAILED","Please enter input with length more than %d for %s");
define("E_VAL_ALNUM_CHECK_FAILED","Please provide an alpha-numeric input for %s");
define("E_VAL_ALNUM_S_CHECK_FAILED","Please provide an alpha-numeric input for %s");
define("E_VAL_NUM_CHECK_FAILED","Please provide numeric input for %s");
define("E_VAL_ALPHA_CHECK_FAILED","Please provide alphabetic input for %s");
define("E_VAL_ALPHA_S_CHECK_FAILED","Please provide alphabetic input for %s");
define("E_VAL_EMAIL_CHECK_FAILED","Please provide a valida email address");
define("E_VAL_LESSTHAN_CHECK_FAILED","Enter a value less than %f for %s");
define("E_VAL_GREATERTHAN_CHECK_FAILED","Enter a value greater than %f for %s");
define("E_VAL_REGEXP_CHECK_FAILED","Please provide a valid input for %s");
define("E_VAL_DONTSEL_CHECK_FAILED","Wrong option selected for %s");
define("E_VAL_SELMIN_CHECK_FAILED","Please select minimum %d options for %s");
define("E_VAL_SELONE_CHECK_FAILED","Please select an option for %s");
define("E_VAL_EQELMNT_CHECK_FAILED","Value of %s should be same as that of %s");
define("E_VAL_NEELMNT_CHECK_FAILED","Value of %s should not be same as that of %s");

class FormValidator 
{
    var $validator_array;
    var $error_hash;
    var $custom_validators;

function FormValidator()
{
    $this-&gt;validator_array = array();
    $this-&gt;error_hash = array();
    $this-&gt;custom_validators=array();
}

function AddCustomValidator(&amp;$customv)
{
    array_push($this-&gt;custom_validators,$customv);
}

function addValidation($variable,$validator,$error)
{
    $validator_obj = new ValidatorObj();
    $validator_obj-&gt;variable_name = $variable;
    $validator_obj-&gt;validator_string = $validator;
    $validator_obj-&gt;error_string = $error;
    array_push($this-&gt;validator_array,$validator_obj);
}
function GetErrors()
{
    return $this-&gt;error_hash;
}

function ValidateForm()
{
    $bret = true;

    $error_string="";
    $error_to_display = "";


    if(strcmp($_SERVER['REQUEST_METHOD'],'POST')==0)
    {
        $form_variables = $_POST;
    }
    else
    {
        $form_variables = $_GET;
    }

    $vcount = count($this-&gt;validator_array);


    foreach($this-&gt;validator_array as $val_obj)
    {
        if(!$this-&gt;ValidateObject($val_obj,$form_variables,$error_string))
        {
            $bret = false;
            $this-&gt;error_hash[$val_obj-&gt;variable_name] = $error_string;
        }
    }

    if(true == $bret &amp;&amp; count($this-&gt;custom_validators) &gt; 0)
    {
        foreach( $this-&gt;custom_validators as $custom_val)
        {
            if(false == $custom_val-&gt;DoValidate($form_variables,$this-&gt;error_hash))
            {
                $bret = false;
            }
        }
    }
    return $bret;
}


function ValidateObject($validatorobj,$formvariables,&amp;$error_string)
{
    $bret = true;

    $splitted = explode("=",$validatorobj-&gt;validator_string);
    $command = $splitted[0];
    $command_value = '';

    if(isset($splitted[1]) &amp;&amp; strlen($splitted[1])&gt;0)
    {
        $command_value = $splitted[1];
    }

    $default_error_message="";

    $input_value ="";

    if(isset($formvariables[$validatorobj-&gt;variable_name]))
    {
     $input_value = $formvariables[$validatorobj-&gt;variable_name];
    }

    $bret = $this-&gt;ValidateCommand($command,$command_value,$input_value,
                                $default_error_message,
                                $validatorobj-&gt;variable_name,
                                $formvariables);


    if(false == $bret)
    {
        if(isset($validatorobj-&gt;error_string) &amp;&amp;
            strlen($validatorobj-&gt;error_string)&gt;0)
        {
            $error_string = $validatorobj-&gt;error_string;
        }
        else
        {
            $error_string = $default_error_message;
        }

    }//if
    return $bret;
}

function validate_req($input_value, &amp;$default_error_message,$variable_name)
{
  $bret = true;
    if(!isset($input_value) ||
        strlen($input_value) &lt;=0)
    {
        $bret=false;
        $default_error_message = sprintf(E_VAL_REQUIRED_VALUE,$variable_name);
    }   
  return $bret; 
}

function validate_maxlen($input_value,$max_len,$variable_name,&amp;$default_error_message)
{
    $bret = true;
    if(isset($input_value) )
    {
        $input_length = strlen($input_value);
        if($input_length &gt; $max_len)
        {
            $bret=false;
            $default_error_message = sprintf(E_VAL_MAXLEN_EXCEEDED,$variable_name);
        }
    }
    return $bret;
}

function validate_minlen($input_value,$min_len,$variable_name,&amp;$default_error_message)
{
    $bret = true;
    if(isset($input_value) )
    {
        $input_length = strlen($input_value);
        if($input_length &lt; $min_len)
        {
            $bret=false;
            $default_error_message = sprintf(E_VAL_MINLEN_CHECK_FAILED,$min_len,$variable_name);
        }
    }
    return $bret;
}

function test_datatype($input_value,$reg_exp)
{
    if(ereg($reg_exp,$input_value))
    {
        return false;
    }
    return true;
}

function validate_email($email) 
{
    return eregi("^[_\.0-9a-zA-Z-]+@([0-9a-zA-Z][0-9a-zA-Z-]+\.)+[a-zA-Z]{2,6}$", $email);
}

function validate_for_numeric_input($input_value,&amp;$validation_success)
{

    $more_validations=true;
    $validation_success = true;
    if(strlen($input_value)&gt;0)
    {

        if(false == is_numeric($input_value))
        {
            $validation_success = false;
            $more_validations=false;
        }
    }
    else
    {
        $more_validations=false;
    }
    return $more_validations;
}

function validate_lessthan($command_value,$input_value,
            $variable_name,&amp;$default_error_message)
{
    $bret = true;
    if(false == $this-&gt;validate_for_numeric_input($input_value,
                                $bret))
    {
        return $bret;
    }
    if($bret)
    {
        $lessthan = doubleval($command_value);
        $float_inputval = doubleval($input_value);
        if($float_inputval &gt;= $lessthan)
        {
            $default_error_message = sprintf(E_VAL_LESSTHAN_CHECK_FAILED,
                                    $lessthan,
                                    $variable_name);
            $bret = false;
        }//if
    }
    return $bret ;
}

function validate_greaterthan($command_value,$input_value,$variable_name,&amp;$default_error_message)
{
    $bret = true;
    if(false == $this-&gt;validate_for_numeric_input($input_value,$bret))
    {
        return $bret;
    }
    if($bret)
    {
        $greaterthan = doubleval($command_value);
        $float_inputval = doubleval($input_value);
        if($float_inputval &lt;= $greaterthan)
        {
            $default_error_message = sprintf(E_VAL_GREATERTHAN_CHECK_FAILED,
                                    $greaterthan,
                                    $variable_name);
            $bret = false;
        }//if
    }
    return $bret ;
}

function validate_select($input_value,$command_value,&amp;$default_error_message,$variable_name)
{
    $bret=false;
    if(is_array($input_value))
    {
        foreach($input_value as $value)
        {
            if($value == $command_value)
            {
                $bret=true;
                break;
            }
        }
    }
    else
    {
        if($command_value == $input_value)
        {
            $bret=true;
        }
    }
    if(false == $bret)
    {
        $default_error_message = sprintf(E_VAL_SHOULD_SEL_CHECK_FAILED,
                                        $command_value,$variable_name);
    }
    return $bret;
}

function validate_dontselect($input_value,$command_value,&amp;$default_error_message,$variable_name)
{
   $bret=true;
    if(is_array($input_value))
    {
        foreach($input_value as $value)
        {
            if($value == $command_value)
            {
                $bret=false;
                $default_error_message = sprintf(E_VAL_DONTSEL_CHECK_FAILED,$variable_name);
                break;
            }
        }
    }
    else
    {
        if($command_value == $input_value)
        {
            $bret=false;
            $default_error_message = sprintf(E_VAL_DONTSEL_CHECK_FAILED,$variable_name);
        }
    }
  return $bret;
}



function ValidateCommand($command,$command_value,$input_value,&amp;$default_error_message,$variable_name,$formvariables)
{
    $bret=true;
    switch($command)
    {
        case 'req':
                    {
                        $bret = $this-&gt;validate_req($input_value, $default_error_message,$variable_name);
                        break;
                    }

        case 'maxlen':
                    {
                        $max_len = intval($command_value);
                        $bret = $this-&gt;validate_maxlen($input_value,$max_len,$variable_name,
                                            $default_error_message);
                        break;
                    }

        case 'minlen':
                    {
                        $min_len = intval($command_value);
                        $bret = $this-&gt;validate_minlen($input_value,$min_len,$variable_name,
                                        $default_error_message);
                        break;
                    }

        case 'alnum':
                    {
                        $bret= $this-&gt;test_datatype($input_value,"[^A-Za-z0-9]");
                        if(false == $bret)
                        {
                            $default_error_message = sprintf(E_VAL_ALNUM_CHECK_FAILED,$variable_name);
                        }
                        break;
                    }

        case 'alnum_s':
                    {
                        $bret= $this-&gt;test_datatype($input_value,"[^A-Za-z0-9 ]");
                        if(false == $bret)
                        {
                            $default_error_message = sprintf(E_VAL_ALNUM_S_CHECK_FAILED,$variable_name);
                        }
                        break;
                    }

        case 'num':
        case 'numeric':
                    {
                        $bret= $this-&gt;test_datatype($input_value,"[^0-9]");
                        if(false == $bret)
                        {
                            $default_error_message = sprintf(E_VAL_NUM_CHECK_FAILED,$variable_name);
                        }
                        break;                          
                    }

        case 'alpha':
                    {
                        $bret= $this-&gt;test_datatype($input_value,"[^A-Za-z]");
                        if(false == $bret)
                        {
                            $default_error_message = sprintf(E_VAL_ALPHA_CHECK_FAILED,$variable_name);
                        }
                        break;
                    }
        case 'alpha_s':
                    {
                        $bret= $this-&gt;test_datatype($input_value,"[^A-Za-z ]");
                        if(false == $bret)
                        {
                            $default_error_message = sprintf(E_VAL_ALPHA_S_CHECK_FAILED,$variable_name);
                        }
                        break;
                    }
        case 'email':
                    {
                        if(isset($input_value) &amp;&amp; strlen($input_value)&gt;0)
                        {
                            $bret= $this-&gt;validate_email($input_value);
                            if(false == $bret)
                            {
                                $default_error_message = E_VAL_EMAIL_CHECK_FAILED;
                            }
                        }
                        break;
                    }
        case "lt": 
        case "lessthan": 
                    {
                        $bret = $this-&gt;validate_lessthan($command_value,
                                                $input_value,
                                                $variable_name,
                                                $default_error_message);
                        break;
                    }
        case "gt": 
        case "greaterthan": 
                    {
                        $bret = $this-&gt;validate_greaterthan($command_value,
                                                $input_value,
                                                $variable_name,
                                                $default_error_message);
                        break;
                    }

        case "regexp":
                    {
                        if(isset($input_value) &amp;&amp; strlen($input_value)&gt;0)
                        {
                            if(!preg_match("$command_value",$input_value))
                            {
                                $bret=false;
                                $default_error_message = sprintf(E_VAL_REGEXP_CHECK_FAILED,$variable_name);
                            }
                        }
                        break;
                    }
      case "dontselect": 
      case "dontselectchk":
      case "dontselectradio":
                    {
                        $bret = $this-&gt;validate_dontselect($input_value,
                                                           $command_value,
                                                           $default_error_message,
                                                            $variable_name);
                         break;
                    }//case

      case "shouldselchk":
      case "selectradio":
                  {
                        $bret = $this-&gt;validate_select($input_value,
                               $command_value,
                               $default_error_message,
                                $variable_name);
                        break;
                  }//case
      case "selmin":
                    {
                        $min_count = intval($command_value);

                        if(isset($input_value))
                        {
                            if($min_count &gt; 1)
                            {
                                $bret = (count($input_value) &gt;= $min_count )?true:false;
                            }
                            else
                            {
                              $bret = true;
                            }
                        }
                        else
                        {
                            $bret= false;
                            $default_error_message = sprintf(E_VAL_SELMIN_CHECK_FAILED,$min_count,$variable_name);
                        }

                        break;
                    }//case
     case "selone":
                    {
                        if(false == isset($input_value)||
                            strlen($input_value)&lt;=0)
                        {
                            $bret= false;
                            $default_error_message = sprintf(E_VAL_SELONE_CHECK_FAILED,$variable_name);
                        }
                        break;
                    }
     case "eqelmnt":
                    {

                        if(isset($formvariables[$command_value]) &amp;&amp;
                           strcmp($input_value,$formvariables[$command_value])==0 )
                        {
                            $bret=true;
                        }
                        else
                        {
                            $bret= false;
                            $default_error_message = sprintf(E_VAL_EQELMNT_CHECK_FAILED,$variable_name,$command_value);
                        }
                    break;
                    }
      case "neelmnt":
                    {
                        if(isset($formvariables[$command_value]) &amp;&amp;
                           strcmp($input_value,$formvariables[$command_value]) !=0 )
                        {
                            $bret=true;
                        }
                        else
                        {
                            $bret= false;
                            $default_error_message = sprintf(E_VAL_NEELMNT_CHECK_FAILED,$variable_name,$command_value);
                        }
                        break;
                    }
    }//switch
    return $bret;
}//validdate command
}?&gt; 
</code></pre>
