Ver Mensaje Individual
  #4 (permalink)  
Antiguo 28/04/2005, 07:22
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Esto de aquí:
$_GET [ $variable ] = str_replace ( "'" , "\'" , $_GET [ $variable ]);

Se pude solventar con:
mysql_escape_string()

y aplicarlo sólo a las variables que realmente intervengan en tu consulta SQL .. Pero bueno .. si quieres aplicarlo a todo .. OK.

El caso es que todo depende del estado de (php.ini) magic_guote_gpc() .. (por lo menos en la solución que plantea " Eloi de San Martín" (me gustaría ver el link de donde publicó ese tema para hacerle el comentario) Por defecto dicha directiva suele estar a "ON" .. por ende se añaden automáticamente los caracteres de espace (el /) a comillas ... Por eso si se usa a ON esta directiva y luego se vuelve añadir otro / .. el resultado no será el correcto (tendremos dos) como para luego aplicar un stripslashess() a la hora de recuperar el dato.

por otro lado .. por ejemplo .. depende del RDBMS que se use .. así podrás hacer algo como tu ejemplo:
pagintabonita.php?id=145225;DELETE FROM usuarios

o no ..

Por ejemplo Mysql (con su cliente mysql_xxx() funciones) .. no permite ejecutar várias sentencias SQL en un mysql_query() separadas por ; .. pero otros motores de BD como MS SQL Server .. o incluso Mysql con sus mysqli_xxx() (para Mysql 4.1.x en adelante) si que permite ejecutar várias sentencias SQL separadas por ; ... Así que en determinados casos estamos "salvados" por "defecto" según que BD se use ...

Un saludo,