martes, 24 de abril de 2012

definiendo filtros automaticos para almacenaje en base de datos

Estos filtros se ejecutan automáticamente al momento de almacenar o modificar cualquier contenido en la base de datos.


la finalidad es hacer que se apliquen filtros a la información almacenada sin importar en que parte del algoritmo ejecute el almacenamiento.


Al momento de utilizar las funciones agregar_sql_mash o modificar_sql_mash  estos filtros se aplicaran automáticamente

Importante,  estos filtros no afectan los valores de GP ,_GET y $_POST


para darlo de alta editar el archivo:

masheditor/global/bd/nombre_tabla/filtros.php

y agregamos


$filtrobd['nombre_tabla___campo_deseado']='filtro_deseado';

observe nombre_tabla___campo_deseado,  esta separado por triple guión bajo el nombre de la tabla y del campo.

Ej:
tabla: empleados
campos: nombre, apellido, edad
filtro: intval y  strtoupper

archivo

masheditor/global/bd/empleados/filtros.php




$filtrobd['empleados___nombre']='strtoupper';
$filtrobd['empleados___apellido']='strtoupper';
$filtrobd['empleados___edad']='intval';









definiendo filtros globales para pase de parámetros

Siempre contamos con variables que son pasadas mediante $_GET y $_POST en multiples areas de nuestro proyecto siendo común un error de filtrado o validación en uno de ellos.

Para evitar ello existe una definición global de filtros, mediante la cual al encontrar la variable a filtrar inmediatamente aplica el filtro, al menos que especifiquemos un filtro manual.

Para aplicar estos filtros es mediante la función GP que remplaza a $_GET y $_POST

Alta del filtro

Esta se logra editando el archivo  masheditor/global/gp/gp.php  y en ella escribimos

<?php


$filtrogp['idempresa']='intval';
$filtrogp['idempleado']='intval';

$filtrogp['clave_empleado']='formato_de_clave';



?>

en este ejemplo cuando llamemos

$empresa=GP('idempresa')

automaticamente le aplicara un intval, como si hubiéramos escrito $empresa=GP('idempresa','intval')

si desearamos omitir el filtro intval simplemente lo especificamos manualmente e ignora el global

$empresa=GP('idempresa','nuevo_filtro')



paso de variables GET y POST

El paso de variables $_GET y $_POST puede ser directamente utilizado, o de preferencia utilizar la funcion GP la cual añade filtros adicionales

esta funcion unifica GET y POST en una sola funcion, en donde POST tiene mas peso que GET

MODO DE USO
$mixed = GP( variable , filtro=NULL)
en donde los filtros pueden ser varios a la vez, separados por comas

Estos filtros pueden ser funciones existentes de PHP, funciones propias o de la libreria de filtros del masheditor

Ejemplo
traer la variable de get llamada var
$variable=GP('var');

traer la variable get llamada var y convertirlo en entero
$variable=GP('var','intval');


traer la variable get llamada var y convertirlo en mayusculas
$variable=GP('var','strtoupper');

traer la variable get llamada var y convertirlo en decodificarlo de UTF8 y pasarlo a mayusculas
$variable=GP('var','utf8_decode,strtoupper,formatea_cedula');

equivale a 
$variable=formatea_cedula(strtoupper(utf8_decode($_GET['var'])));
o lo mismo:
$variable=$_GET['var'];
$variable=utf8_decode($variable);
$variable=strtoupper($variable);
$variable=formatea_cedula($variable);



ejemplo

crear el servicio masheditor/servicios/hola/hola.php

<?php
$usuario=GP('nombre','strtoupper');
$valor="hola $nombre";
?>

La direccion
http://www.mipagina.com/mt,30/nombre,Miguel

regresará:
hola MIGUEL




creando un servicio basico


crear archivo masheditor/servicios/hola/hola.php

<?php
$valor="hola Mundo";
?>

darlo de alta en el panel administrativo y listo.

El panel administrativo les mostrara el ID del servicio y este se accede como:

http://www.mipagina.com/mt,30 esto suponiendo que es el id #30