Ver Mensaje Individual
  #8  
Antiguo 04-12-2006
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Reputación: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Vale. Pues la segunda cuestión (la que plantea la segunda URL) se me está atragantando. Y es que si en el primer caso podíamos actuar en un mismo punto, en una función en concreto, en este segundo caso no parece que sea así.

He conseguido escapar la cadena de búsqueda (en que se incluye el JavaScript) con la función "htmlentities", de manera que aparentemente se soluciona el tema. Empero, he dicho antes que todas las casillas de los formularios de la aplicación están comprometidas...

Y sólo hay una función que "controle" cada una de estas casillas. El método "Escapar" que hemos visto antes. Sin embargo, aunque pareciera que esto iba a servir de ayuda, en realidad no lo parece. Véase el método "Escapar" tal y como está ahora:

Código PHP:
    function Escapar($cadena) {
        return 
mysql_real_escape_string(stripslashes
         
(strip_tags($cadena)), $this->enlaceConexionBd);
    } 
Pues bien, si lo dejáramos tal que así:

Código PHP:
    function Escapar($cadena) {
        return 
mysql_real_escape_string(stripslashes
         
(strip_tags(htmlentities($cadena))), $this->enlaceConexionBd);
    } 
Funcionaría por un lado, es decir, ya no tendría efecto el JavaScript de las casillas, de las variables que nos llegasen vía "HTTP GET", quiero decir, pero,... ay diosito si es que todo lo hago mal...

Resulta que el mismo método "Escapar" que usamos para las variables que nos llegan de entrada, también lo usamos cuando mostramos la información de dichas variables en las correspondientes casillas.

Me explico. Cuando vamos a mostrar la búsqueda realizada por el usuario escribimos en la casilla de búsqueda la búsqueda actual... o sea, trabalenguajes aparte, hacemos algo como esto:

Código PHP:
$casillaBusqueda $bdatos->Escapar(BUSQUEDA); 
Pero, al hacer esto, pareciera que la función "htmlentities" codificara la cadena que se muestra en la propia casilla, de manera que esta no se muestra bien... creo que una imagen vale más que mil palabras en este caso.

Conseguimos que el JavaScript no tenga efecto, pero, los datos de las casillas se muestran malamente:



Total,... yo llevo creyendo hace tiempo que igual que usamos un método "Escapar" deberíamos utilizar un método "Desescapar"... o que en todo caso no estamos haciendo un buen uso del método "Escapar"... lo usamos un poco sin ton ni son, me parece a mí...
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita