Foros del Web » Programando para Internet » PHP »

Quitar el apostrofe

Estas en el tema de Quitar el apostrofe en el foro de PHP en Foros del Web. Este problema es similar a uno que tenía antes: En mi URL se ve esto: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original http://localhost/productos.formulario.editar.php?idProducto=9 Si le pongo ...
  #1 (permalink)  
Antiguo 16/12/2010, 10:54
Avatar de bandolera  
Fecha de Ingreso: abril-2009
Mensajes: 613
Antigüedad: 15 años, 7 meses
Puntos: 7
Pregunta Quitar el apostrofe

Este problema es similar a uno que tenía antes:
En mi URL se ve esto:
Código HTML:
Ver original
  1. http://localhost/productos.formulario.editar.php?idProducto=9

Si le pongo un apostrofe, ya no funciona:
Código HTML:
Ver original
  1. No se pudo ejecutar la consulta obtener: SELECT id_producto, id_categoria, nombre, descripcion, precio, stock, importancia, imagen FROM producto WHERE id_producto=9\'

Y tiene mysql_real_escape_string pero supongo que el id_producto está tomando el valor 9\'

Código PHP:
<?php
class ProductoDAO {
    function 
ProductoDAO() {
    }
    function 
obtener($idProducto){
       
$BD = new ConexionDB();   //=====> Aquí se conecta a la BD.
       
$idProducto=mysql_real_escape_string($idProducto);

       
$query "SELECT id_producto, id_categoria, nombre, descripcion,
                        precio, stock, importancia, imagen
                 FROM   producto
                 WHERE id_producto="
.$idProducto;
                 
       
$recordSet $BD->dbLink->Execute($query);
       if (!
$recordSet){
         
Debug::println("No se pudo ejecutar la consulta obtener: " $query);
         return 
false;
       }
       
$fila=$recordSet->FetchRow();

       
$producto = new ProductoVO($fila['id_producto'], $fila['id_categoria'], $fila['nombre'],
          
$fila['descripcion'], $fila['precio'], $fila['stock'], $fila['importancia'],
          
$fila['imagen']);

      return 
$producto;
    }
Cómo soluciono esto??
  #2 (permalink)  
Antiguo 16/12/2010, 12:05
Avatar de lair  
Fecha de Ingreso: enero-2009
Ubicación: header('Location: Morelia");
Mensajes: 1.052
Antigüedad: 15 años, 11 meses
Puntos: 46
Respuesta: Quitar el apostrofe

Hola.

lo que pasa es que cuando ponene una ' o " dependiendo de tu instruccion sql esta se modifica rompiendo la cadena original (tu consulta), para eso lo que yo hago es eliminar comillas, diagonales y/o espacios.

Código PHP:
Ver original
  1. foreach($_GET as $key => $param){
  2.     $_GET[$key]=str_replace(" ","%20",str_replace("'","\'",str_replace("\\","",$param)));
  3. }

te explico un poco.
primero tomo cada parametro que llega (en este caso por GET), el primer str_replace cambia los espacios por %20, que es su codigo html; el segundo elimina las postrofes, esto lo hago con el caracter de escape \ diagonal invertida (alt+92), y el ultimo elimina las diagonales para que no inyecten comillas. Asi mismo puedes hacerlo para las comillas dobles.

Suerte.

Etiquetas: quitar, apostrofes
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 00:10.