Foros del Web » Programando para Internet » PHP »

Bendito Error?

Estas en el tema de Bendito Error? en el foro de PHP en Foros del Web. Estoy trabajando con un guestbook funciona todo bien pero cuando alguien escribe comillas " o ' me lo muestra luego asi \"EN CONTROL\", de tus ...
  #1 (permalink)  
Antiguo 17/02/2004, 20:49
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 21 años, 4 meses
Puntos: 2
Bendito Error?

Estoy trabajando con un guestbook

funciona todo bien pero cuando alguien escribe
comillas " o ' me lo muestra luego asi

\"EN CONTROL\", de tus
amigos bla bla bla

A que se debe eso?
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #2 (permalink)  
Antiguo 17/02/2004, 21:50
Avatar de HiTek  
Fecha de Ingreso: noviembre-2003
Ubicación: LF, Santiago.Chile
Mensajes: 217
Antigüedad: 21 años
Puntos: 0
a que haz implementado la funcion

addslashes() que agrega los Slash \ a los caracteres que podrian alterar el funcionamiento de un script...

luego al mostrar el mensaje le aplicas la funcion StrpSlashes() y ahi lo tienes...salu2

Última edición por HiTek; 17/02/2004 a las 21:52
  #3 (permalink)  
Antiguo 18/02/2004, 09:15
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 22 años, 5 meses
Puntos: 16
Hola,

Revisa los valores de las directivas magic_quotes_gpc y magic_quote_runtime

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 18/02/2004, 16:06
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 21 años, 4 meses
Puntos: 2
Este es mi codigo de funciones.php

Código PHP:
<?
    
    
function HTML() {
        global 
$mensaje$nombre$email$url$tema$sms;
        
$mensaje str_replace("<","&lt",$mensaje);
        
$mensaje str_replace(">","&gt",$mensaje);
                
$mensaje =  wordwrap($mensaje$sms ,"<br>",1); 
        
        
$nombre str_replace("<","&lt",$nombre);
        
$nombre str_replace(">","&gt",$nombre);
        
$email str_replace("<","&lt",$email);
        
$email str_replace(">","&gt",$email);
        
$url str_replace("<","&lt",$url);
        
$url str_replace(">","&gt",$url);
    return;
    }

        function 
Remplazar() {
        global 
$mensaje;
        
$mensaje str_replace("[:)]","<img src=\"img/sonrisa.gif\">"$mensaje);
        
$mensaje str_replace("[:(]","<img src=\"img/triste.gif\">"$mensaje);
        
$mensaje str_replace("[;)]","<img src=\"img/ginando.gif\">"$mensaje);
        
$mensaje str_replace("[8)]","<img src=\"img/ojotes.gif\">"$mensaje);
        
$mensaje str_replace("[:P]","<img src=\"img/lengua.gif\">"$mensaje);
        
$mensaje str_replace("[:D]","<img src=\"img/risa.gif\">"$mensaje);
        
$mensaje str_replace("[cool]","<img src=\"img/cool.gif\">"$mensaje);
        
$mensaje str_replace("[llorar]","<img src=\"img/llorando.gif\">"$mensaje);
        
$mensaje str_replace("[enojo]","<img src=\"img/enojado.gif\">"$mensaje);
        
$mensaje str_replace("[duda]","<img src=\"img/duda.gif\">"$mensaje);
        
$mensaje str_replace("[bien]","<img src=\"img/bien.gif\">"$mensaje);
        
$mensaje str_replace("[mal]","<img src=\"img/mal.gif\">"$mensaje);
    return;
    }

    
    function 
FatalError() {
        global 
$error;
        for(
$i 0$i sizeof($error); $i++) {
          echo 
"- $error[$i]<br>";
        }
    return;
    }

    
    function 
Template($fichero) {
        global 
$nombre$email$url$mensaje$fecha$nfirmas;
        
$template fopen($fichero"r");
        while(!
feof($template)) {
        
$buffer fgets($template4096);
        
$buffer str_replace("{Nombre}"$nombre$buffer);
        
$buffer str_replace("{Email}"$email$buffer);
        
$buffer str_replace("{URL}"$url$buffer);
        
$buffer str_replace("{Mensaje}"$mensaje$buffer);
        
$buffer str_replace("{Fecha}"$fecha$buffer);
        
$buffer str_replace("{Numero_Firmas}"$nfirmas$buffer);
        echo 
$buffer;
        }
        
fclose($template);
    return;
    }

    
$nfirmas count(file($FicheroBase));

        function 
Paginacion() {
        global 
$LimiteMensajes$Base;
        if(
$LimiteMensajes count($Base)) {
        
$Paginas count($Base) / $LimiteMensajes;
        echo 
"<b>Páginas : </b>";
        for(
$i 0$i $Paginas$i++) {
        echo 
"<a href=index.php?paginado=".$i $LimiteMensajes.">".( $i )."</a> ";
        }
        }
    return;
    }
?>

<script language="JavaScript">
<!--
function Smile(texto){
document.form.mensaje.value = document.form.mensaje.value + texto;
}
// -->
</script>
Pero que solucion le doy?

en mi phpinfo
esto esta asi

magic_quotes_gpc On On
magic_quotes_runtime Off Off
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol

Última edición por Gerald; 18/02/2004 a las 16:10
  #5 (permalink)  
Antiguo 18/02/2004, 16:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Gerald

Esa función "HTML" ya lo hace (y mejor) las funciones nativas de PHP:

htmlentities()

y si quieres eliminarlas completamente:
strip_tags()


En cuanto a tu problema .. usa stripslashes() a tu $mensaje variable (podría ser en tu función "HTML")

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 18/02/2004, 16:49
Avatar de Gerald  
Fecha de Ingreso: julio-2003
Mensajes: 1.356
Antigüedad: 21 años, 4 meses
Puntos: 2
Código PHP:
function HTML() {
        global 
$mensaje$nombre$email$url$tema$sms;
        
$mensaje str_replace("<","&lt",$mensaje);
        
$mensaje str_replace(">","&gt",$mensaje);
                
$mensaje =  wordwrap($mensaje$sms ,"<br>",1); 
        
$mensaje stripslashes($mensaje); 
        
$mensaje strip_tags($GLOBALS[mensaje]); 
        
$mensaje htmlentities($GLOBALS[mensaje]); 
        
$nombre str_replace("<","&lt",$nombre);
        
$nombre str_replace(">","&gt",$nombre);
        
$email str_replace("<","&lt",$email);
        
$email str_replace(">","&gt",$email);
        
$url str_replace("<","&lt",$url);
        
$url str_replace(">","&gt",$url);
    return;
    } 

Gracias Cluster eres un as!!!
__________________
Solo por Hoy: Trataré de fortalecer mi mente. Estudiaré y aprenderé algo útil
Hoteldipity
Arte Caracol
  #7 (permalink)  
Antiguo 18/02/2004, 18:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Ya puestos quita:

$mensaje = str_replace("<","&lt",$mensaje);
$mensaje = str_replace(">","&gt",$mensaje);

por que si hace eso antes del strip_tags() o el htmlentities() poco van hacer esas funciones ..

Y decidete si quires que se vean los tag HTML/etc o no .. para usar strips_tags() o sólo htmlentities() ... Pero usa una sóla función ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 12:13.