Ver Mensaje Individual
  #4 (permalink)  
Antiguo 17/03/2016, 14:18
lnunez
 
Fecha de Ingreso: junio-2007
Mensajes: 7
Antigüedad: 16 años, 11 meses
Puntos: 0
Respuesta: Protección de formulario contra inyección sql (ando perdido)

Saludos pateketrueke, este es el codigo.


Código PHP:
Ver original
  1. <?
  2. //**Variables que proporcionan la capacidad de cambiar el
  3. //**motor de datos si se requiere.
  4. global $DATOS;
  5. $DATOS["motor"] = "clsMySQL()";
  6. //******************************************************
  7. //**Clase que proporciona el servicio de datos.
  8. class clsServicoDeDatos{
  9.     var $IDatos;
  10.     function ObtenerIDatos(){
  11.         global $DATOS;
  12.         $this->IDatos = new clsIDatos($DATOS["motor"]);
  13.         return $this->IDatos;
  14.     }
  15. }
  16. //*********************************************
  17. //**Clase que proporciona la interfaz con el motor de datos.
  18. class clsIDatos extends clsMySQL{
  19.     function clsIDatos($pMotor="clsMySQL()"){
  20.         //eval("\$this = new $pMotor;");
  21.     }
  22. }
  23. //**********************************************************
  24. class clsMySQL{
  25.     //Esta clase proporciona las instrucciones de manejos de datos para MySQL.
  26.     function _ObtenerParametro($pParam){
  27.     /*
  28.     Recibe una cadena con el parámetro a obtener, estos parámetros están almacenados en la tabla GENERAL
  29.     */
  30.         $R = 0;
  31.         switch ($pParam){
  32.             case "grupo":
  33.                 $R = 5;
  34.                 break;
  35.             case "modulo":
  36.                 $R = 1;
  37.                 break;
  38.             case "modulo de solicitudes":
  39.                 $R = 28;
  40.                 break;
  41.             case "modulo de revision de documentos":
  42.                 $R = 36;
  43.                 break;
  44.             case "estatus encuesta":
  45.                 $R = 13;
  46.                 break;
  47.             case "encuesta vigente":
  48.                 $R = 14;
  49.                 break;
  50.             case "encuesta no vigente":
  51.                 $R = 15;
  52.                 break;
  53.             case "tipos de documento":
  54.                 $R = 17;
  55.                 break;
  56.             case "tipos de hipervínculo":
  57.                 $R = 20;
  58.                 break;
  59.             case "solicitud pendiente":
  60.                 $R = 30;
  61.                 break;
  62.             case "solicitud terminada":
  63.                 $R = 31;
  64.                 break;
  65.             case "secciones publicas":
  66.                 $R = 18;
  67.                 break;
  68.             case "secciones privadas":
  69.                 $R = 19;
  70.                 break;
  71.             case "ámbito de documento":
  72.                 $R = 43;
  73.                 break;
  74.             case "estatus de documento":
  75.                 $R = 47;
  76.                 break;
  77.             case "documento en aprobación":
  78.                 $R = 48;
  79.                 break;
  80.             case "documento aprobado":
  81.                 $R = 49;
  82.                 break;
  83.         }
  84.         return $R;
  85.     }
  86.  
  87.     function ObtenerFicha($pNF){
  88.         /*
  89.         Obtiene los campos necesarios para la creación de la clase clsFicha.
  90.         Recibe como parámetro el número de la ficha a mostrar.
  91.         */
  92.         $SQL = "SELECT  FIC_ID,
  93.                         FIC_CLADEWEY,
  94.                         FIC_CLALOCAL,
  95.                         FIC_AUTPERSONAL,
  96.                         FIC_TITULO,
  97.                         FIC_ISBN,
  98.                         FIC_EDICION,
  99.                         FIC_LUGAR,
  100.                         FIC_PAGINAS,
  101.                         FIC_SERIE,
  102.                         FIC_NOTGENERALES,
  103.                         FIC_NOTBIBLIOGRAFIA,
  104.                         FIC_NOTCONTENIDO,
  105.                         FIC_ENCAUTOR,
  106.                         FIC_ENCAUCORPORATIVO,
  107.                         FIC_ENCNOMGRAFICOS,
  108.                         FIC_ENCTEMA,
  109.                         FIC_AUTCORPORATIVO,
  110.                         FIC_TITULOALT,
  111.                         FIC_RESUMEN
  112.                 FROM ficha             
  113.                 WHERE FIC_ID = $pNF";
  114.                
  115. //              $SQL = "SELECT * FROM ficha WHERE FIC_ID = $pNF";
  116.                
  117.         return $this->_Ejecutar($pSQL1);
  118.     }
  119.    
  120.     function BuscarFichas($T, $V){     
  121.         /*
  122.         Busca las fichas que concuerden con el criterio de búsqueda.
  123.         Recibe como parámetro el tipo de búsqueda y el valor a buscar.     
  124.         */
  125.         $Con = '1';
  126.        
  127.         switch($T){
  128.        
  129.             case "BBuscar":
  130.                 $Con = "FIC_CLADEWEY LIKE '%$V%' OR
  131.                         FIC_CLALOCAL LIKE '%$V%' OR
  132.                         FIC_AUTPERSONAL LIKE '%$V%' OR
  133.                         FIC_AUTCORPORATIVO LIKE '%$V%' OR
  134.                         FIC_AUTASAMBLEA LIKE '%$V%' OR
  135.                         FIC_ASITITULO LIKE '%$V%' OR
  136.                         FIC_TITUNIFORME LIKE '%$V%' OR
  137.                         FIC_TITULO LIKE '%$V%' OR
  138.                         FIC_EDICION LIKE '%$V%' OR
  139.                         FIC_LUGAR LIKE '%$V%' OR
  140.                         FIC_PAGINAS LIKE '%$V%' OR
  141.                         FIC_SERIE LIKE '%$V%' OR
  142.                         FIC_NOTGENERALES LIKE '%$V%' OR
  143.                         FIC_NOTBIBLIOGRAFIA LIKE '%$V%' OR
  144.                         FIC_NOTCONTENIDO LIKE '%$V%' OR
  145.                         FIC_NOTIDIOMA LIKE '%$V%' OR
  146.                         FIC_ENCAUTOR LIKE '%$V%' OR
  147.                         FIC_ENCAUCORPORATIVO LIKE '%$V%' OR
  148.                         FIC_ENCTEMA LIKE '%$V%' OR
  149.                         FIC_ENCNOMGRAFICOS LIKE '%$V%'";
  150.             /*case "Buscar":
  151.                 $Con = "MATCH(FIC_ISBN, FIC_CLADEWEY, FIC_CLALOCAL, FIC_AUTPERSONAL, FIC_AUTCORPORATIVO, FIC_AUTASAMBLEA, FIC_ASITITULO, FIC_TITUNIFORME,   FIC_TITULO, FIC_EDICION, FIC_LUGAR, FIC_PAGINAS, FIC_SERIE, FIC_NOTGENERALES, FIC_NOTBIBLIOGRAFIA, FIC_NOTCONTENIDO, FIC_NOTIDIOMA, FIC_ENCAUTOR,FIC_ENCAUCORPORATIVO,FIC_ENCTEMA,FIC_ENCNOMGRAFICOS ) AGAINST ('%$V%')";
  152.                 break;  */
  153.                
  154.             case "Buscar":
  155.                 $Con = "MATCH( FIC_TITULO, FIC_TITULOALT,FIC_AUTPERSONAL,FIC_NOTCONTENIDO, FIC_RESUMEN, FIC_CLADEWEY, FIC_ISBN ) AGAINST ('%$V%')";
  156.                 break;     
  157.             }
  158.         $SQL = "SELECT FIC_ID FROM ficha WHERE $Con";
  159.         return $this->_Ejecutar($pSQL1);
  160.     }
  161.  
  162. function _Ejecutar($pSQL1){
  163.         /*
  164.         Ejecuta las instrucciones en MySQL.
  165.         Recibe como parámetro la instrucción SQL, si es una consulta (SELECT), regresa un arreglo bidimensional, de lo contrario, un valor bolean igual a verdadero. Si falla la conexión al servidor MySQL o no se ejecuta con éxito la consulta, termina la ejecución del script.
  166.         */
  167.         set_time_limit(180);
  168.         /*
  169.         Conexion al server de MySQL
  170.   */
  171.    
  172.         $hostname = "*****";
  173.         $port = "*****";
  174.         $username = "*****";
  175.         $password = "*****";
  176.         $database = "*****";
  177.         $pSQL = mysql_real_escape_string($pSQL1);
  178.        
  179.         $C = mysql_connect("$hostname","$username","$password");
  180.         //$C = @mysql_connect("localhost", "*****", "*****");
  181.         //$C = @mysql_connect("localhost", "*****",""); // ************
  182.                        
  183.         if($C!=false){         
  184.             //mysql_db_query("*****", "SET NAMES 'utf8'", $C);
  185.             //$Res = @mysql_db_query("*****", utf8_encode($pSQL), $C);
  186.             $Res = @mysql_db_query("$database", $pSQL, $C);
  187.             if($Res!=false){
  188.                 if(substr($pSQL, 0, 6)=="SELECT"){
  189.                     $Return = array();
  190.                     $r=-1;
  191.                     while($Fila = mysql_fetch_row($Res)) {
  192.                         $r++;
  193.                         for($i=0; $i<count($Fila); $i++){
  194.                             $Return[$r][$i] = $Fila[$i];
  195.                         }
  196.                     }
  197.                     mysql_free_result($Res);
  198.                     mysql_close($C);
  199.                     return $Return;
  200.                 }else{
  201.                     mysql_close($C);
  202.                     return true;
  203.                 }              
  204.             }else{
  205.                 die (mysql_errno($C) . ": " . mysql_error($C) ) ;
  206.                 echo "<br />";
  207.                 /*die ( "No fue posible ejecutar la siguiente instrucción \"$pSQL\".");*/
  208.             }
  209.         }else{
  210.             die ("No se ha podido establecer la conexión con el servidor de datos.");
  211.         }
  212.     }
  213. }
  214. ?>