Foros del Web » Programando para Internet » PHP »

Expresión regular para chequear SQL válidas

Estas en el tema de Expresión regular para chequear SQL válidas en el foro de PHP en Foros del Web. Hola a todos. Veréis, llevo un rato intentando crear una funcionalidad, pero no soy capaz por mis limitados conocimientos de ereg. Lo que tengo es ...
  #1 (permalink)  
Antiguo 26/11/2009, 04:44
 
Fecha de Ingreso: octubre-2006
Mensajes: 1
Antigüedad: 18 años, 1 mes
Puntos: 0
Expresión regular para chequear SQL válidas

Hola a todos.
Veréis, llevo un rato intentando crear una funcionalidad, pero no soy capaz por mis limitados conocimientos de ereg.

Lo que tengo es un servicio web que me ejecuta sentencias (si, sentencias en sql en un servidor, para hacer de "recogedor de datos") por unos temas de comunicación.
Claro, yo le paso la SQL y el me devuelve el array de resultados, pero me gustaría hacer una validación previa a estas SQL.

Es decir, yo tendría, por ejemplo, un array con sql validas que se podrían ejecutar:
- select dni from datos
- select nombre from datos where dni=LOQUESEA
Por ejemplo.

Entonces, al servicio web, le llegaría una sql como esta: select nombre from datos where dni=123
Luego, haría un foreach con el array de sql validas y por cada una haría un ereg entre la sql valida del array actual y la sql que me llega. Sino hay ninguna falsa, continua con el codigo.

El tema está en que no sé como hacer bien las sql validas para que funcionen con ereg, puesto que los campos where pueden ser variables e incluir cualquier letra o nº, a ver si alguien puede echarme una mano!

Este es el pseudocodigo que tengo:
Código PHP:
// esta sería la sql que llega
$sql "select nombre from tabla where dni=123";

$validas = array("select dni from tabla""select nombre from tabla where dni=^[*]$");

$continuar false;
foreach (
$validas as $valida)
{
    if (
ereg($valida$sql))
    {
        
$continuar true;
    }
}

if (
$continuar)
{
... 
Muchas gracias y un saludo
  #2 (permalink)  
Antiguo 26/11/2009, 08:59
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Expresión regular para chequear SQL válidas

lee el siguiente tema... usar ereg* es obsoleto

es mejor hacerlo con PCRE (preg*)
http://www.forosdelweb.com/f18/aport...s-pcre-646110/
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 26/11/2009, 09:30
Avatar de dggluz  
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años, 6 meses
Puntos: 50
Respuesta: Expresión regular para chequear SQL válidas

Creo que es más fácil definir una sola forma genérica, en lugar de varias en un array:
Código PHP:
if(preg_match('/SELECT (\w+,?)+ FROM ((tablaPermitida1|tablaPermitida2|tablaPermitida3)(\s\w+)?)+( WHERE (\w([=])*))?;/'$sql))
{
    
// Aquí ejecutas la sentencia

La cadena para la expresión regular la acabo de hacer y no garantizo que funcione (de hecho, tengo pocas esperanzas de que lo haga); de todos modos, quería darte una idea de cómo lo haría yo. ¡Suerte!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:12.