Location: PHPKode > scripts > Validate_Form > validate_form/validate.class.php
<?PHP
/************************************************************************/
/* Rhadrix PHP-Scripts                                                  */
/* ============================================                         */
/*                                                                      */
/* Copyright (c) 2002 by Silvio Ricci                                   */
/* http://www.rhadrix.com                                               */
/*                                                                      */
/* This program is free software. You can redistribute it and/or modify */
/* it under the terms of the GNU General Public License as published by */
/* the Free Software Foundation; either version 2 of the License.       */

/*
   Description: 
   Utility to validate the fields from a fomr, you can set the langues and
   the fields witch an array
*/
/************************************************************************/
class Validate_Form {
    var $go_ok = "";
	var $my_head = "";
	var $my_foot = "";
    var $my_check = "";
    var $my_error = "";
	var $languages = array ("es"=>"español","it"=>"italiano","en"=>"english");
	var $my_label_set = array('lang'=>'','username'=>'','email'=>'','password'=>'','password2'=>'','name'=>'','url'=>'','age'=>'','select'=>'');
    var $my_label = array (
	    "es"=> array("Idioma:","Nombre:","Email:","Edad:","URL:","Usuario:","Password:","Confirma Password:","Registra"),
	    "it"=> array("Lingua:","Nome:","Email:","Età:","URL:","Nick:","Password:","Conferma Password:","Registra"),
	    "en"=> array("Lang:","Name:","Email:","Age:","URL:","Nickname:","Password:","Confir Password:","Registre"));
    var $error = array (
	    "es"=> array(
			 "La Passwords no corresponde, escoja otra.",
			 "El Username es demasiado corta. M&iacute;nimo 3 car&aacute;cteres v&aacute;lidos.",
			 "El Username es demasiado larga. M&aacute;ximo 11 car&aacute;cteres v&aacute;lidos.",
			 "El Username contiene car&aacute;cteres inv&aacute;lidos.",
			 "El formato de la direcci&oacute;n Email es inv&aacute;lida.",
			 "La Password es demasiado corta. M&iacute;nimo 3 car&aacute;cteres v&aacute;lidos.",
			 "La Password es demasiado larga. M&aacute;ximo 20 car&aacute;cteres v&aacute;lidos.",
			 "La Password contiene car&aacute;cteres inv&aacute;lidos.",
			 "El Nombre contiene car&aacute;cteres inv&aacute;lidos.",
			 "El Url contiene car&aacute;cteres inv&aacute;lidos.",
			 "La Edad contiene car&aacute;cteres inv&aacute;lidos."
			 ),
	    "it"=> array(
			 "La Password non corrisponde, scegliere un'altra.",
			 "L'Username è troppo corta. Minimo 3 caratteri validi.",
			 "L'Username è troppo lunga. Massimo 11 caratteri validi.",
			 "L'Username contiene caratteri invalidi.",
			 "Il formato dell'indirizzo Email è invalido.",
			 "La Password è troppo corta. Minimo 3 caratteri validi.",
			 "La Password è troppo lunga. Massimo 20 caratteri validi.",
			 "La Password contiene caratteri invalidi.",
			 "Il Nome contiene caratteri invalidi.",
			 "L'Url contiene caratteri invalidi.",
			 "L'Età contiene caratteri invalidi."
			 ),
	    "en"=> array(
			 "The Password does not correspond, to choose an other.",
			 "The username is too much short. Minimum 3 valid characters.",
			 "The username is too much long. Maximum 11 valid characters.",
			 "The username contains characters invalids.",
			 "The format of address email is invalid.",
			 "The Password is too much short. Minimum 3 valid characters.",
			 "The Password is too much long. Maximum 11 valid characters.",
			 "The Password contains characters invalids.",
			 "The Name contains characters invalids.",
			 "The PasswordURL contains characters invalids.",
			 "The Age contains characters invalids."
			 ));
    /**
     * Validate_Form::_check_pass2()
     * Verifica si las dos variables son idénticas
	 * @access  private
     * @param $l 
     * @param $password
     * @param $password2
     * @return regresa el elemento de la matriz en caso de error
     */
    function _check_pass2($l,$password,$password2) {
		if ($password != $password2) return $this->error[$l][0];
    }
    /**
     * Validate_Form::_check_uname()
     * Verifica si la variable es mayor de 3 carácteres o menor de 20
	 * además controla si es alfanumérico o tiene los carácteres _ -
	 * @access  private
     * @param $l
     * @param $username
     * @return regresa el elemento de la matriz en caso de error 
     */
    function _check_uname($l,$username) {
	    if (strlen($username) < 3) return $this->error[$l][1];
	    if (strlen($username) > 20) return $this->error[$l][2];
	    if (!ereg("^[[:alnum:]_-]+$", $username)) return $this->error[$l][3];
    }
    /**
     * Validate_Form::_check_email()
     * Verifica si el formato de la dirección e-mail es compuesta correctamente
	 * @access  private
     * @param $l
     * @param $email
     * @return  regresa el elemento de la matriz en caso de error
     */
    function _check_email($l,$email) {
	    if (!eregi("^([a-z0-9]+)([._-]([a-z0-9]+))*[@]([a-z0-9]+)([._-]([a-z0-9]+))*[.]([a-z0-9]){2}([a-z0-9])?$", $email)) return $this->error[$l][4];
    }
    /**
     * Validate_Form::_check_pass()
     * Verifica si la variable es mayor de 3 carácteres o menor de 20
	 * además controla si es alfanumérico o tiene los carácteres _ -
	 * @access  private
     * @param $l
     * @param $password
     * @return  regresa el elemento de la matriz en caso de error
     */
    function _check_pass($l,$password) {
	    if (strlen($password) < 3) return $this->error[$l][5];
	    if (strlen($password) > 20) return $this->error[$l][6];
	    if (!ereg("^[[:alnum:]_-]+$", $password)) return $this->error[$l][7];
    }
    /**
     * Validate_Form::_check_name()
     * Verifica si el nombre no contiene números
	 * @access  private
     * @param $l
     * @param $name
     * @return  regresa el elemento de la matriz en caso de error
     */
    function _check_name($l,$name) {
        if (!eregi("^[a-z ]+$", $name)) return $this->error[$l][8];
    }
    /**
     * Validate_Form::_check_url()
     * Verifica si el formato del URL es compuesta correctamente
	 * @access  private
     * @param $l
     * @param $url
     * @return  regresa el elemento de la matriz en caso de error
     */
    function _check_url($l,$url) {
	    if (!eregi("^((ht|f)tp://)((([a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3}))|(([0-9]{1,3}\.){3}([0-9]{1,3})))((/|\?)[a-z0-9~#%&'_\+=:\?\.-]*)*)$", $url)) return $this->error[$l][9];
    }
    /**
     * Validate_Form::_check_age()
     * Verifica si la edad no contiene carácteres
	 * @access  private
     * @param $l
     * @param $age
     * @return  regresa el elemento de la matriz en caso de error
     */
    function _check_age($l,$age) {
	    if (ereg("[^0-9]", $age)) return $this->error[$l][10];
    }
    /**
     * Validate_Form::check_form()
     * Cada parámetro llama a la correspondiente función privada obteniendo
	 * un respectivo valor si resulta inválido, que en caso afirmativo se le
	 * dá el valor de 1 a la variable $my_check, para decidir, al final de la
	 * función si volver a hacer el módulo con el mensaje de error o redirigirse
	 * hacia la página donde introduciremos los respectivos valores en la base
	 * de datos.
	 * @access public
     * @param $l
     * @param $username
     * @param $email
     * @param $password
     * @param $password2
     * @param $name
     * @param $url
     * @param $age
     * @return 
     */
    function check_form($l,$username,$email,$password,$password2,$name='',$url='',$age='') {
    	$my_uname = $this->_check_uname($l,$username);
	    $my_email = $this->_check_email($l,$email);
	    $my_password = $this->_check_pass($l,$password);
	    $my_password2 = $this->_check_pass2($l,$password,$password2);
	    if($name) $my_name = $this->_check_name($l,$name);
	    if($url) $my_url = $this->_check_url($l,$url);
	    if($age) $my_age = $this->_check_age($l,$age);
		if($my_uname) {
		    $this->my_error .= $my_uname."<BR>\n";
			$this->my_check = 1;
        }
		if($my_email) {
		    $this->my_error .= $my_email."<BR>\n";
			$this->my_check = 1;
        }
		if($my_password) {
		    $this->my_error .= $my_password."<BR>\n";
			$this->my_check = 1;
        }
		if($my_password2) {
		    $this->my_error .= $my_password2."<BR>\n";
			$this->my_check = 1;
        }
		if($my_name) {
		    $this->my_error .= $my_name."<BR>\n";
			$this->my_check = 1;
        }
		if($my_url) {
		    $this->my_error .= $my_url."<BR>\n";
			$this->my_check = 1;
        }
		if($my_age) {
		    $this->my_error .= $my_age."<BR>\n";
			$this->my_check = 1;
        }
		if($this->my_check == 1) $this->make_form($this->my_error);
        else $this->_go_to();
    }
    /**
     * Validate_Form::make_form()
     * Función que se ocupa de crear el módulo, llamando el head y el foot
	 * para crear la página correctamente.
	 * @access public
     * @param $msg Este parámetro sirve para pasar el mensaje de error
     * @return 
     */
    function make_form($msg='') {
	    global $PHP_SELF,$l,$username,$email,$password,$password2,$name,$url,$age;
		$a = $this->_get_label();
	    echo $this->_get_head();
		if($msg) echo "<BLOCKQUOTE>\n$msg</BLOCKQUOTE>\n";
        $linea = "<div align=\"center\">\n"
                ."<FORM ACTION=\"$PHP_SELF\" METHOD=\"POST\">\n"
                ."<table border=\"0\" cellspacing=\"3\" cellpadding=\"3\">\n";
        if($a[select]) $linea .= "<tr>\n\t<td align=\"right\">".$this->my_label[$a[lang]][0]."</td>\n"
                                ."\t<td>".$this->_drop_down()."</td>\n</tr>\n";
        if($a[name]) $linea .= "<tr>\n\t<td align=\"right\">".$this->my_label[$a[lang]][1]."</td>\n"
                              ."\t<td><input type=text name=\"name\" value=\"$name\"></td>\n</tr>\n";
        $linea .= "<tr>\n\t<td align=\"right\">".$this->my_label[$a[lang]][2]."</td>\n"
                 ."\t<td><input type=text name=\"email\" value=\"$email\"></td>\n</tr>\n";
        if($a[age]) $linea .= "<tr>\n\t<td align=\"right\">".$this->my_label[$a[lang]][3]."</td>\n"
                             ."\t<td><input type=text name=\"age\" value=\"$age\"></td>\n</tr>\n";
        if($a[url]) $linea .= "<tr>\n\t<td align=\"right\">".$this->my_label[$a[lang]][4]."</td>\n"
		                     ."\t<td><input type=\"text\" name=\"url\" value=\"$url\"></td>\n</tr>\n";
        $linea .= "<tr>\n\t<td align=\"right\">".$this->my_label[$a[lang]][5]."</td>\n"
                 ."\t<td><input type=\"text\" name=\"username\" value=\"$username\"></td>\n</tr>\n"
                 ."<tr>\n\t<td align=\"right\">".$this->my_label[$a[lang]][6]."</td>\n"
                 ."\t<td><input type=\"password\" name=\"password\" value=\"$password\"></td>\n</tr>\n"
                 ."<tr>\n\t<td align=\"right\">".$this->my_label[$a[lang]][7]."</td>\n"
                 ."\t<td><input type=\"password\" name=\"password2\" value=\"$password2\"><input type=\"hidden\" name=\"ok\" value=\"1\"></td>\n</tr>\n"
                 ."<tr>\n\t<td colspan=\"2\" align=\"center\"><br><input type=\"submit\" value=\"".$this->my_label[$a[lang]][8]."\" name=\"submit\"></td>\n</tr>\n"
                 ."</table>\n"
                 ."</form>\n"
                 ."</div>\n";		
		echo $linea;
	    echo $this->_get_foot();
    }
    /**
     * Validate_Form::_drop_down()
     * Función que se ocupa de crear el menú de los idiomas si lo hemos
	 * configurado en el archivo de inicio.
	 * @access  private
     * @return 
     */
    function _drop_down() {
        $linea = "<select name=\"l\" size=\"1\">\n";
        while (list($k,$v)=each($this->languages)) $linea .= "\t\t<option value=\"$k\">$v</option>\n";
        $linea .= "\t</select>";
        return $linea;
    }
	/**
	 * Validate_Form::_go_to()
	 * Se ocupa de redireccionar la página si no se ha encontrado ningún error
	 * @return 
	 */
	function _go_to() {
	    header("Location: ".$this->_get_url()."?go=1");
    }
    /**
     * Validate_Form::set_url()
     * Configura la página que se abrirá si el módulo se ha completado correctamente
	 * @access  private
     * @param $url_ok
     * @return 
     */
    function set_url($url_ok) {
	    $this->go_ok = $url_ok;
    }
    /**
     * Validate_Form::_get_url()
     * Toma el url de la página configurado en el archivo de inicio.
	 * @access  private
     * @return 
     */
    function _get_url() {
	    return $this->go_ok;
    }
    /**
     * Validate_Form::set_head()
     * Configura el header de la  página en el archivo de inicio.
	 * @access  public
     * @param $head
     * @return 
     */
    function set_head($head) {
	    $this->my_head = $head;
    }
    /**
     * Validate_Form::_get_head()
     * Toma el contenido del header de la página
	 * @access  private
     * @return 
     */
    function _get_head() {
	    return $this->my_head;
    }
    /**
     * Validate_Form::set_foot()
     * Configura el footer de la  página en el archivo de inicio.
	 * @access  public
     * @return 
     */
    function set_foot($foot) {
	    $this->my_foot = $foot;
    }
    /**
     * Validate_Form::_get_foot()
     * Toma el contenido del footer de la página
	 * @access  private
     * @return 
     */
    function _get_foot() {
	    return $this->my_foot;
    }
    /**
     * Validate_Form::set_label()
     * Configura los títulos de los campos del módulo en el archivo de inicio.
	 * @access  public
     * @param $label
     * @return 
     */
    function set_label($label) {
	    $this->my_label_set = $label;
    }
    /**
     * Validate_Form::_get_label()
     * Toma la matriz de los títulos de los campos del módulo.
	 * @access  private
     * @return 
     */
    function _get_label() {
	    return $this->my_label_set;
    }
}
?>
Return current item: Validate_Form