Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Yekka en 19 Diciembre 2008, 04:11 am



Título: Error: Header may not contain ...
Publicado por: Yekka en 19 Diciembre 2008, 04:11 am
Hola, eso,  por que se produce ese error al enviar para metros  usando los header, me pasa solo en los archivos que reciben contenido de textarea, al devolver el valor al formulario de donde proviene

Citar
Warning: Header may not contain more than a single header, new line detected. in ....... line 132...

Agradezco cualquier ayuda, para solucionarlo  de momento, no envió parámetros con los header, pero necesito hacer unos de ellos.

hasta luego...


Título: Re: Error: Header may not contain ...
Publicado por: LuffyFF en 19 Diciembre 2008, 10:51 am
Deberías pegar el código que tengas en la linea 132.

Pero ese error, pueden ser varias cosas, que tengas una cabecera, como header, y tengas una URL con espacios, o saltos de linea.

Por ejemplo...
esto esta mal
Citar
header("Location: http://www.paginaweb.com/indice de paginas.php");
esto también esta mal
Citar
header("Location: http://www.paginaweb.com/indice
 de paginas.php");

Si vas a poner URLs con espacios, tendrías que hacerle un urlencode, o cambiar los espacios por %20, o +.

Seguramente el valor del textarea lleva espacios, o algún carácter malo, y luego se usa una cabecera para redirección, o cookie, lo que sea. Pero si es una cabecera usando header para redirigir, que no tenga espacios ni saltos de linea. También antes de las cabeceras no tiene que haber HTML, aunque te saltaría otro error.

Te recomiendo hacerle un urlencode, o la función que necesites al valor del textarea.

La verdad no sé muy bien, porque no haz dado demasiados detalles. Pero me huele a que es por algún espacio.

Sino puedes usar una redirección en JS, o HTML.


Título: Re: Error: Header may not contain ...
Publicado por: Yekka en 19 Diciembre 2008, 14:27 pm
Hola, gracias por responder!!

Si,  he leído lo de los espacios, en eso soy muy cuidadosa, lo que si es cierto, es que puede  suceder que el usurario  utilice varios saltos de línea en los textareas, en ese caso no se como tratarlo. Lo extraño es que me daba el error aunque ese objeto estuviera vació, lo solucione con la función que me recomendaste.

no lo hago con java script, porque he intentado enviar mas de un valor por url como parámetro y no me lo acepta, solo uno.

Hay alguna función que me cambie los espacios y saltos de línea por esos caracteres que dices? --> %20.o+  y después decodificarlo? a ver si aunque el usuario los use  no tenga el problema o ya con el urlencode y decode se soluciona totalmente?

gracias de nuevo!!!!


Título: Re: Error: Header may not contain ...
Publicado por: LuffyFF en 19 Diciembre 2008, 14:40 pm
Citar
Hay alguna función que me cambie los espacios y saltos de línea por esos caracteres que dices? --> %20.o+  y después decodificarlo? a ver si aunque el usuario los use  no tenga el problema o ya con el urlencode y decode se soluciona totalmente?
Con el urlencode cambiarías los espacios a HTML. Luego con el urldecode lo puedes decodificar. Para los saltos de lineas, podrías remover los saltos de línea.

Un ejemplo sería así:
Citar
$url = $_POST['url'];
$url = str_replace(array("\r\n", "\r", "\n"), "", $url);
$url = urlencode($url);

De esta forma, remplazamos los saltos de linea (\r\n \r \n) por nada, y luego encodeamos la URL.

$url comenzaría siendo el campo recibido por el formulario.

Lo de los espacios, el mismo urlencode se encarga de ello, al igual que los acentos, ñ, etc.


Título: Re: Error: Header may not contain ...
Publicado por: Yekka en 19 Diciembre 2008, 17:44 pm
aaa ok!! gracias!!

Como necesito que esos saltos de lineas esten cuando se muestre el contenido nuevamente, entonces lo mas fiable seria no reemplazarlos por nada, sino, reemplazarlos por algun otro caracter para agregarlos nuevamente.

Para mostrar una idea de lo que hago, Pag1.html envio el contenido de los campos por submit a pag2.php, este valida y en caso de error  llama a header enviando los datos de vuelta a pag1 para cargarlos en los campos correspondientes, por eso necesito esos saltos de linea nuevamente, para que se muestre de una manera mas amena y no todo en una sola linea.

Gracias ya me has ayudado bastante, hare otras preguntas pero no tienes que responder si no lo deseas, ¿que opinas de esa forma de trabajar? ¿crees qque esta bien como lo hago o hay mejores formas?

gracias por todo,  :-*