Foros del Web » Programando para Internet » PHP »

Me pone unas \ delate de todas las " o las '

Estas en el tema de Me pone unas \ delate de todas las " o las ' en el foro de PHP en Foros del Web. Tengo un pequeño formulario donde mis usuarios colocan codigo html y con este se crea un archivo, pero no se porque se agregan unas barras ...
  #1 (permalink)  
Antiguo 29/09/2005, 08:50
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Desacuerdo Me pone unas \ delate de todas las " o las '

Tengo un pequeño formulario donde mis usuarios colocan codigo html y con este se crea un archivo, pero no se porque se agregan unas barras invertidas delate de cualquier comilla lo que hace que el codigo no se vea correctamente.

El formulario es una textera
URL d_directorio.php?mode=banner
Código PHP:
<form action="d_banner.php" method="post" >
  <tr>
    <th class="thCornerL">Ingrese el código HTML del banner para su categoria</th>
  </tr>
  <tr>
    <td class="row2"><textarea name="codigohtml" cols="100" rows="20" style="width: 400px" onFocus="if(this.value=='Coloque aquí su codigo')this.value='';" ><?php 
    
if( file_exists('banner_editores/d_banner_'.$username.'.inc.html')){
        
        @
readfile('banner_editores/d_banner_'.$username.'.inc.html')or die ("La apertura de archivo ha fallado: el error fue '$php_errormsg'");

        
$filesize filesize('banner_editores/d_banner_'.$username.'.inc.html');         
    }
    else{
        echo 
'<html>Coloque aquí su codigo</html>'
        
$filesize '0';
    }
</
textarea>
</
td>
  </
tr>
  <
tr>
    <
td class="row1" align="center"><span class="gensmall">Tamaño del archivo: <?php echo $filesize?> bytes
        ( Maximo 512 bytes )</span></td>
  </tr>
<tr>
<th class="thCornerL"><input name="submit" type="submit" value="Editar"></th>
</tr>
</form>
Y el php que crea y escribe en el archivo es este:
URL d_banner.php
Código PHP:
$username $userdata['username'];
$codigo_html $_POST['codigohtml'];
// comprobaciones para el codigo ingresado

if($codigo_html ==''){
    
$codigo_html '<html>Coloque aquí su codigo</html>';
}
$url 'banner_editores/d_banner_'.$username.'.inc.html';
$url htmlentities($url);

// Abrimos el fichero
$fo fopen($url"w"); 
// Escribimos en el fichero
$fw fwrite($fo$codigo_html);
// Cerramos el fichero
fclose($fo); 

echo 
"<META HTTP-EQUIV=\"REFRESH\" CONTENT=\"0;URL=d_directorio.php?mode=banner\">"

Última edición por lisandro Arg; 29/09/2005 a las 16:05
  #2 (permalink)  
Antiguo 29/09/2005, 09:09
 
Fecha de Ingreso: septiembre-2004
Ubicación: Montevideo
Mensajes: 346
Antigüedad: 19 años, 7 meses
Puntos: 0
Hola,

te cuentno, tenes que usar funciones de remplazo en el codigo html para quitar caracteeres especiales como las comillas, la barra es porque las comillas se representan '\ o "\ no recuerdo, pero el tema de fondo es, que tenes que remplazar las apariciones de las comillas por por ejemplo [COMILLAS] o algo por el estilo con una fincion de remplazo y luego volver las cosas a su lugar al mostrar el codigo que el usuario ingreso. Yo tuve que hacer algo asi pero ahora no lo tengo a la mano y me funciono, espero que te sirva.

Estoy seguro de que el error que tenes va por ese lado.

Lamento no tener tiempo de explayarme mas.

Saludos.
__________________
Liber
  #3 (permalink)  
Antiguo 29/09/2005, 10:05
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Usa:

stripslashess()

Así eliminas los caracteres de "escape" que se añaden a ese tipo de caracteres especiales (por tu configuración de PHP: magic_quote_gpc)

Un saludo,
  #4 (permalink)  
Antiguo 29/09/2005, 15:18
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Gracias liberfg !!

Cluster pongo la esa funcion en todos lados y no funciona. La pongo justo cuando recibe los datos del formulario y nada, la pongo tambien cuando leo el contenido del archivo y nada.

Necesito que directamente no se cree el archivo con ninguna comilla puesto que este se ve tal cual desde un iframe.

No entiendo en que punto del proceso se generan las commilas.
  #5 (permalink)  
Antiguo 29/09/2005, 15:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero como lo estás haciendo (pon el código que usas).

Debes usar la función cuando deses mostrar tu dato que llegó con esas comillas escapadas: ejemplo directo desde tu formulario .. o si así lo almacenastes en un archivo o BD .. cuando lo leas de ahí (es recomendable almacenar esos datos con \ siempre)

Un saludo,
  #6 (permalink)  
Antiguo 29/09/2005, 16:01
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
El codigo esta arriba cluster !

El codigo genera automaticamente un archivo .html con el nombre de usuario ej : gustavo.inc.html y necesito que se guarde sin las comillas puesto que ese archivo se ve desde un IFRAME en una pagina html asi que una vez que se crea el archivo ya no tengo mas posibilidades de cabiar algo.

gracias
  #7 (permalink)  
Antiguo 30/09/2005, 06:09
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Gracias cluster ya esta solocionado.

Lo raro ahora es que no me funciono con la funcion stripslashess() si no con la que hace todo lo contrario addlashess() raro no ??

Gracias !
  #8 (permalink)  
Antiguo 30/09/2005, 06:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Te preguntaba que "donde has intentado usar dicha función" (no donde está el código).

Si dices que generas un archivo y este debe quedar sin \ en las comillas y demás .. entonces aplicar la función que te mencioné donde generas tu archivo!.

Código PHP:
$fw fwrite($fostripslashess($codigo_html)); 
Un saludo,
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 23:28.