Foros del Web » Programando para Internet » PHP »

Por que me borra los enters? problema con funcion limpiar php

Estas en el tema de Por que me borra los enters? problema con funcion limpiar php en el foro de PHP en Foros del Web. esta es mi funcion @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <? function cleanString ( $string ) {     $string = trim ( $string ) ...
  #1 (permalink)  
Antiguo 26/09/2012, 21:38
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
Por que me borra los enters? problema con funcion limpiar php

esta es mi funcion

Código PHP:
Ver original
  1. <? function cleanString($string)
  2. {
  3.     $string=trim($string);
  4.     $string=mysql_escape_string($string);
  5.     $string=htmlspecialchars($string);
  6.     $string=htmlspecialchars($string, ENT_QUOTES);
  7.     $string=htmlentities($string);
  8.     $string = strip_tags($string);
  9.     return $string;
  10. }
  11. ?>

y si limpio la cadena larga que contiene enters y todo eso.
al mostrarla en un echo, no me muestra los enters que incluye, a que se debe?
  #2 (permalink)  
Antiguo 26/09/2012, 21:47
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 10 meses
Puntos: 81
Respuesta: Por que me borra los enters? problema con funcion limpiar php

Se debe a que te falta un poco de conocimiento de HTML, es lógico que no haya enters, alguna vez has escrito algo en un documento HTML y has insertado enters manualmente y has visto su resultado? no tiene porque mostrarse esos enters en los navegadores porque así es la interpretación del HTML, para el salto de línea existe una etiqueta HTML <br />. Entonces para que esos enters se expresen gráficamente en el navegador debes reemplazar esos saltos de líneas por <br /> y para eso existe una función PHP, es esta: nl2br, sólo úsala.
  #3 (permalink)  
Antiguo 26/09/2012, 22:39
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Por que me borra los enters? problema con funcion limpiar php

Tu función tiene un mal planteamiento:

1- Sugiérote usar mysqli en lugar de mysql, esta librería está en camino de ser obsoleta y ya no tendrá soporte en futuras versiones de PHP.
2- El uso de mysqli_real_escape_string() debe ser la última modificación en esa función, porque, imagínate lo que pasaría si alguna otra de las funciones que tienes cambia/elimina los caracteres de escape... te generaría errores en las consultas.

Ahhh, usa nl2br() para que aparezcan los saltos de línea al mostrar el texto.
__________________
- León, Guanajuato
- GV-Foto
  #4 (permalink)  
Antiguo 27/09/2012, 10:17
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
Respuesta: Por que me borra los enters? problema con funcion limpiar php

Cita:
Iniciado por Triby Ver Mensaje
Tu función tiene un mal planteamiento:

1- Sugiérote usar mysqli en lugar de mysql, esta librería está en camino de ser obsoleta y ya no tendrá soporte en futuras versiones de PHP.
2- El uso de mysqli_real_escape_string() debe ser la última modificación en esa función, porque, imagínate lo que pasaría si alguna otra de las funciones que tienes cambia/elimina los caracteres de escape... te generaría errores en las consultas.

Ahhh, usa nl2br() para que aparezcan los saltos de línea al mostrar el texto.
Voy a intentar hacer eso... y si en unas paginas uso el mysqli y en otras el mysql jejs.. bueno el que aprendi primero fue el mysql, pero las cambiare mas adelante para no hacerme lio ahorita XD...

mm como seria? nl2br($string);
  #5 (permalink)  
Antiguo 27/09/2012, 13:49
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Por que me borra los enters? problema con funcion limpiar php

Cita:
Iniciado por minombreesmm
mm como seria? nl2br($string);
Consulta el manual... o pruébalo directamente y nos cuentas!
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 27/09/2012, 18:48
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
Respuesta: Por que me borra los enters? problema con funcion limpiar php

Cita:
Iniciado por Triby Ver Mensaje
Tu función tiene un mal planteamiento:

1- Sugiérote usar mysqli en lugar de mysql, esta librería está en camino de ser obsoleta y ya no tendrá soporte en futuras versiones de PHP.
2- El uso de mysqli_real_escape_string() debe ser la última modificación en esa función, porque, imagínate lo que pasaría si alguna otra de las funciones que tienes cambia/elimina los caracteres de escape... te generaría errores en las consultas.

Ahhh, usa nl2br() para que aparezcan los saltos de línea al mostrar el texto.
Graciass lo use y funciono para los enters..
y tambien cambie a mysqli la conexion y todo.
el detalle es que cuando uso el mysqli_real_escape_string

deja nullo estos datos
Código PHP:
Ver original
  1. $tema=cleanString($_POST['tema']);
  2. $texto=cleanString($_POST['texto']);
osea no inserta nada en esos campos de la tabla...

Código PHP:
Ver original
  1. function cleanString($string)
  2. {
  3.  
  4.    $string=trim($string);
  5.    
  6.     $string=htmlspecialchars($string);
  7.     $string=htmlspecialchars($string, ENT_QUOTES);
  8.     $string=htmlentities($string);
  9.     $string=strip_tags($string);
  10.     $string=nl2br($string);
  11.    
  12.     $string=mysqli_real_escape_string($con,$string);
  13.     return $string;
  14. }

pero cuando uso el normal

Código PHP:
Ver original
  1. $string=mysql_escape_string($string);

si lo hace..

mmm pero dicen que ya va a ser obsoleto..

que diferencia hay entre esta linea

Código PHP:
Ver original
  1. $string=mysql_escape_string($string);

y esta

Código PHP:
Ver original
  1. $string=mysqli_real_escape_string($con,$string);

se supone que hacen lo mismo no???

pero parece que no.. pues una deja nullo y la otra lo deja bien...

sera por que mysql_escape_string no funciona en mysqli?

a lo que creo yo es que
Código PHP:
Ver original
  1. $string=mysqli_real_escape_string($con,$string);
esta me limpia el $string de la consulta sql y no el $_POST
que supongo que al fin y al cabo es lo mismo oO..
cielos..!


y aparte otro error. en otra partesita del codigo.. pero esta no tiene relacion con la de arriba por que solo ocurre condicionalmente..
pero no puedo redirigir..
hago esto cuando no se elije foto y para redirigir intento regresar el contenido para que el usuario lo copie y lo pegue de nuevo , para que no pierda el contenido que ya llevaba..
la funcion cleanString es la misma, y es la misma pagina...
Código PHP:
Ver original
  1. $noti="Copie el contenido de la noticia de nuevo y asegurese de que sea mayor a 15 caracteres : <p>".cleanString($_POST['texto'])."<p>";
  2.  
  3. header("Location: ../index.php?content=Noticias/formularionoticias.php&proceso=$noti");
al menos que no use la variable $noti..


posdata el texto de prueba que uso, es este mismo:
Cita:
Iniciado por Triby Ver Mensaje
Tu función tiene un mal planteamiento:

1- Sugiérote usar mysqli en lugar de mysql, esta librería está en camino de ser obsoleta y ya no tendrá soporte en futuras versiones de PHP.
2- El uso de mysqli_real_escape_string() debe ser la última modificación en esa función, porque, imagínate lo que pasaría si alguna otra de las funciones que tienes cambia/elimina los caracteres de escape... te generaría errores en las consultas.

Ahhh, usa nl2br() para que aparezcan los saltos de línea al mostrar el texto.
si uso el mysql_string_escape solo me regresa esto

"Tu funci"

y cuando uso el li no me regresa nada oO

y eso ocurre cuando intento redirigir cuando no se elige foto,
redirijo con esta linea

Código PHP:
Ver original
  1. $noti="Copie el contenido de la noticia de nuevo y asegurese de que sea mayor a 15 caracteres : <p>".cleanString($_POST['texto'])."<p>";
  2.  
  3. header("Location: ../index.php?content=Noticias/formularionoticias.php&proceso=$noti");
de antemano gracias, seguire intentando....!



resposdata cuando introduzco este post en la pagina asi como está aqui:

"[.HIGHLIGHT="PHP"]$noti="Copie el contenido de la noticia de nuevo y asegurese de que sea mayor a 15 caracteres : <p>".cleanString($_POST['texto'])."<p>";

header("Location: ../index.php?content=Noticias/formularionoticias.php&proceso=$noti");[/HIGHLIGHT.]"

me lo regresa asi:
"[.HIGHLIGHT=&amp;quot;PHP&amp;quot;]$noti=&amp;quot;Copie el contenido de la noticia de nuevo y asegurese de que sea mayor a 15 caracteres : &amp;lt;p&amp;gt;&amp;quot;.cleanString($_POST['texto']).&amp;quot;&amp;lt;p&amp;gt;&amp;quot;;

header(&amp;quot;Location: ../index.php?content=Noticias/formularionoticias.php&amp;amp;proceso=$noti&amp;q uot;);[/HIGHLIGHT.]"

le puse un puntito para que puedan ver como me lo regresa...

hay alguna forma de que me regrese todo exactamente como el usuario lo metio? osea en texto plano?


aprovecho para preguntar.. las variables de sesion pueden perderse si se mantienen sin actividad?
me refiero a que estaba con la sesion activa, sin embargo me marco que no reconocia el index, hasta que recargue lo reconocio, en otra seccion de la pagina.. esta raro..

Última edición por minombreesmm; 27/09/2012 a las 19:11
  #7 (permalink)  
Antiguo 27/09/2012, 19:55
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 12 años, 3 meses
Puntos: 52
Respuesta: Por que me borra los enters? problema con funcion limpiar php

Me surgio otra duda con la foto.. cuando cargo la foto en el inputfile..
hice el experimento de que antes de dar guardar cambiar el nombre de la foto que cargue en el inputfile . y cuando le di guardar en el inputfile en la pagina, pues ya no se guardo por que le cambie de nombre..
me gustaria saber como validar si la foto esta realmente en el disco duro del usuario antes de intentar guardar y procesar una imagen que ya no existe..
  #8 (permalink)  
Antiguo 27/09/2012, 21:47
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 3 meses
Puntos: 2237
Respuesta: Por que me borra los enters? problema con funcion limpiar php

A ver, vamos por partes que esto ya parece una ensalada!

1- Generalmente usas htmlentities() o htmlspecialchars(), no las dos, ni más de una vez, porque te codificará texto ya codificado.

2- Si vas a pasar algún texto por url, entonces debes codificarlo con la función adecuada, en este caso, urlencode()

3- La diferencia entre las funciones de escape de mysql y mysqli es que a esta última debes proporcionar el recurso de conexión como primer parámetro, de lo contrario no funciona; pero sería bueno saber si la estás usando en programación estructurada u orientada a objetos.

4- No puedes manipular el campo tipo file, sería un grave riesgo de seguridad en el navegador y creo que ni IExplorer permite hacer eso.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: borra, funcion, html, limpiar, sql
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 10:10.