Location: PHPKode > scripts > vRIF > vrif/class.vRIF.php
<?php
/*************************************************************************
Clase de Validación del RIF (Registro de información fiscal) en Venezuela
Autor    : Gunther González
Empresa  : Igloo Web Studio
E-mail   : hide@address.com
Web      : http://www.igloo.com.ve
Fecha    : 28/09/2006
Versión  : 2.0
**************************************************************************/

//clase validarRIF
class vRIF
{
	//**Atributos de la clase
	var $URL;
	var $pref;
	var $mensaje;
	var $RIF;
	var $empresa;
	
	//Constructor
	function vRIF($RIF, $empresa)
	{
		$this->URL = "http://www.seniat.gov.ve/BuscaRif/BuscaRif.jsp?p_rif=";
		$this->pref = "J,V,P,E,G";
		$this->RIF = $RIF;
		$this->empresa = $empresa;
	}

	//Función consultarRIF
	//Consulta con la base de datos del SENIAT si el RIF existe
	//y si esta asignado a la empresa dada.
	function consultarRIF()
	{
		//Si la función formatearRIF devuelve TRUE
		//se ejecuta el codigo
		if ($this->formatearRIF($this->RIF))
		{
			//Abre la conexión con la BD del SENIAT
			$file = fopen ($this->URL.$this->RIF, "r");

			//Si no se puede establecer la conexión
			//se emite un mensaje de error.
			if (!$file)
			{
				$this->mensaje = $this->mensajes(05);
				return;
			}

			//Lee el resultado de la consulta a la BD del SENIAT
			while (!feof($file)) {
 				$consulta = fread($file, 8192);
			}
			
			//Busca el nombre de la empresa en el resultado de 
			//la BD del SENIAT
			$consulta = stristr(strip_tags($consulta), $this->empresa);
		
			
			//Si el RIF no existe o no está asignado a la empresa dada
			//se emite un mensaje de error.
			if (!$consulta)
			{
				$this->mensaje = $this->mensajes(06);
				return;				
			}

			//Si el RIF existe y está asignado a la empresa dada
			//se emite un mensaje de exito.
			else
			{
				$this->mensaje = $this->mensajes(07);
				return;
			}

			//Cierra la conexión con la BD del SENIAT
			fclose($file);	
		}
	}

	//Función formatearRIF
	//Da formato y valida la estructura del RIF recibido
	function formatearRIF($RIF)
	{
		//Elimina espacios al comienzo y al final del RIF
		//Convierte todos los caracteres del RIF a MAYUSCULAS
		//Elimina el guión (-) del número de RIF
		$result = trim(strtoupper(str_replace("-","",$RIF)));

		//Comprueba la longitud del RIF
		//este solo puede tener una longitud de 10 caracteres
		if (strlen($result) != 10)
		{
			$this->mensaje = $this->mensajes(01);
			return false;
		}
		else
		{
			//Comprueba si el primer digito del RIF es un nmero
			//este caracter solo puede ser una letra
			if (is_numeric(substr($result,0,1)))
			{
				$this->mensaje = $this->mensajes(02);
				return false;
			}

			//Comprueba si el primer digito del RIF contiene
			//un caracter vlido este solo puede ser:
			// "V" (Venezolanos)
			// "E" (Extranjeros
			// "P" (Pasaporte)
			// "J" (Persona jurídica)
			// "G" (Ente gubernamental)
			elseif (!strrchr($this->pref,substr($result,0,1)))
			{
				$this->mensaje = $this->mensajes(03);
				return false;
			}

			//Comprueba si los últimos 9 digitos del RIF son números
			//estos no pueden contener letras
			elseif (!is_numeric(substr($result,1)))
			{
				$this->mensaje = $this->mensajes(04);
				return false;
			}
			else
			{
				//Devuelve el RIF  una vez que ha sido formateado y validado
				$this->RIF = $result;
				return true;
			}
		}
	}
	
	function mensajes($num)
	{
		$msj[01] = "Recuerde que el RIF debe poseer 10 digitos (12 con los guiones).";
		$msj[02] = "El primer caracter del RIF no puede ser un número.";
		$msj[03] = "El primer caracter del RIF solo puede ser 'J', 'V', 'P', 'E' o 'G'.";
		$msj[04] = "Los últimos 9 digitos del RIF solo pueden ser números.";
		$msj[05] = "No se puede acceder al servidor en este momento.";
		$msj[06] = "El RIF (".$this->RIF.") no está asignado a ".strtoupper($this->empresa)." o no existe";
		$msj[07] = "El RIF esta perfecto";
		
		return $msj[$num];
	}
}
?> 
Return current item: vRIF