Ver Mensaje Individual
  #6 (permalink)  
Antiguo 27/09/2012, 18:48
minombreesmm
 
Fecha de Ingreso: agosto-2012
Ubicación: M.
Mensajes: 2.031
Antigüedad: 11 años, 8 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