Sublime directory Surf the web anonymous Pagerank Monitor


Form Processor

FrodoPLM
Sat 23 June 2007, 08:37 am GMT +0200


Does anyone know of a free php form processing script that would allow me to set some fields as required, can both send to an email address and populate a flat file (something I could export to Excel) AND is easy to set up?

olaf
Sat 23 June 2007, 10:49 am GMT +0200
its not so hard for someone with moderate php skills

Nikolas
Sat 23 June 2007, 11:23 am GMT +0200
I've always wanted to release a class for form processing, but I guess you will have to wait a little for this :)

olaf
Sat 23 June 2007, 11:30 am GMT +0200
I've always wanted to release a class for form processing, but I guess you will have to wait a little for this :)
me too, I have a lot of methods finished but providing a class is a lot of work :(

redredred
Fri 20 July 2007, 02:25 am GMT +0200
Here's a *very* basic class to validate forms. Please make suggestions for improving and extending it. Thanks in advance for your answers!

<?php

define('RULE_MIN_LENGTH', 0);
define('RULE_MAX_LENGTH', 1);
define('RULE_IS_EMPTY', 2);
define('RULE_NOT_VALID_EMAIL', 3);
define('RULE_IS_EQUAL', 4);
define('RULE_NOT_EQUAL', 5);
define('RULE_NOT_VALID_URL', 6);
define('RULE_NOT_INT', 7);

class formValidation
{
    public $rules;

    public function addRule($fieldName, $rule, $message, $value = '')
    {
        $this->rules[] = array($fieldName, $rule, $message, $value);
    }

    private function checkEMail($email)
    {
        if ((preg_match('/(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/', $email)) || (preg_match('/^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/',
            $email)))
        {
            if (!function_exists('checkdnsrr'))
            {
                function checkdnsrr($hostName, $recType = '')
                {   
return true; //does not work properly on Windows           
               
                    if (strlen($hostName) > 0)
                    {
                        if ($recType == '')
                            $recType = "MX";
                           
                        exec("nslookup -type=$recType $hostName", $result);
                       
//check each line to find the one that starts with the host
                        //name. If it exists then the function succeeded.           
foreach ($result as $line)
                        {
                            if (eregi("^$hostName", $line))
                            {
                                return true;
                            }
                        }
                       
                        //otherwise there was no mail handler for the domain
                        return false;
                    }
                    return false;
                }
            }

            $host = substr(strrchr($email, '@'), 1);

            if (checkdnsrr($host . '.', 'MX'))
                return true;
            if (checkdnsrr($host . '.', 'A'))
                return true;
            if (checkdnsrr($host . '.', 'CNAME'))
                return true;
        }

        return false;
    }

    public function validateForm($requestArray = array())
    {
        if (!is_array($requestArray) || (count($requestArray) == 0))
        {
            $requestArray = $_REQUEST;
        }

        $messages = array();

        foreach ($this->rules as $item)
        {
            $fieldname = $item[0];
            $rule = $item[1];
            $message = $item[2];
            $value = $item[3];

            switch ($rule)
            {
                case RULE_MIN_LENGTH:
                    if (!isset($requestArray[$fieldname]) || (strlen($requestArray[$fieldname]) < $value))
                    {
                        $messages[] = $message;
                    }
                    break;

                case RULE_MAX_LENGTH:
                    if (!isset($requestArray[$fieldname]) || (strlen($requestArray[$fieldname]) > $value))
                    {
                        $messages[] = $message;
                    }
                    break;

                case RULE_IS_EMPTY:
                    if (!isset($requestArray[$fieldname]) || ($requestArray[$fieldname] == ''))
                    {
                        $messages[] = $message;
                    }
                    break;

                case RULE_NOT_VALID_EMAIL:
                    if (!isset($requestArray[$fieldname]) || !$this->checkEMail($requestArray[$fieldname]))
                    {
                        $messages[] = $message;
                    }
                    break;

                case RULE_IS_EQUAL:
                    if (!isset($requestArray[$fieldname]) || ($requestArray[$fieldname] == $requestArray[$value]))
                    {
                        $messages[] = $message;
                    }
                    break;

                case RULE_NOT_EQUAL:
                    if (!isset($requestArray[$fieldname]) || ($requestArray[$fieldname] != $requestArray[$value]))
                    {
                        $messages[] = $message;
                    }
                    break;

                case RULE_NOT_VALID_URL:
                    if (!isset($requestArray[$fieldname]) || !$this->checkEMail($requestArray[$fieldname]))
                    {
                        $messages[] = $message;
                    }
                    break;

                case RULE_NOT_INT:
                    if (!isset($requestArray[$fieldname]) || !$this->checkEMail($requestArray[$fieldname]))
                    {
                        $messages[] = $message;
                    }
                    break;
            }
        }

        return $messages;
    }
}

?>

Archive for SMF v1.00 by N.P. Valid XHTML 1.0 Transitional