Ver Mensaje Individual
  #7 (permalink)  
Antiguo 15/05/2011, 03:29
Avatar de C2am
C2am
 
Fecha de Ingreso: enero-2009
Ubicación: Rosario, Argentina
Mensajes: 2.005
Antigüedad: 15 años, 3 meses
Puntos: 306
Respuesta: Basta con esta funcion para evitar ataques sql?

Tengo una consulta sobre esa función
¿siempre deberá ser "int"'
Digo:
Código HTML:
Ver original
  1. $variable=GetSQLValueString($_GET['Id'],"int");
Porque cuando pongo por ejemplo.
Código HTML:
Ver original
  1. $variable=GetSQLValueString($_POST['titulo'],"text");
, me salta un error al querer guardar en la base de datos.
En cambio si uso "int", a pesar de ser texto no tengo ningun problema.

Si alguien me puede explicar el funcionamiento de la misma le estaría muy agradecido

BUENO, listo, ya comprendí el por qué del error.
Lo que pasa es que en cada case a la variable le agrega comillas simples, lo cual rompía el codigo sql que uso, ya que no utilizo el sprintf() generado por dreamweaver, sino directamente la consulta. aplicando el filtro o función previamente a introducirla en el SELECT o INTO etc.

Lo único que hice fue agregar otro case llamando "texto" donde reemplazo "'" por " "
Código PHP:
Ver original
  1. switch ($theType) {
  2.     case "text":
  3.       $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
  4.       break;    
  5. case "texto":
  6.       $theValue = ($theValue != "") ? " " . $theValue . " " : "NULL";
  7.       break;    
  8.     case "long":
  9.     case "int":
  10.       $theValue = ($theValue != "") ? intval($theValue) : "NULL";
  11.       break;
__________________
El mundo nada puede contra un hombre que canta en la miseria.
-- Ernesto Sábato--

Última edición por C2am; 15/05/2011 a las 05:19 Razón: YA ENTENDÍ