Foros del Web » Programando para Internet » PHP »

Problema al redireccionar con header

Estas en el tema de Problema al redireccionar con header en el foro de PHP en Foros del Web. En principio un saludo a todos y felicitaciones por este foro. He creado una especie de muro de comentarios, vamos como un foro, para que ...
  #1 (permalink)  
Antiguo 28/07/2011, 03:32
Avatar de marcus69  
Fecha de Ingreso: julio-2011
Mensajes: 4
Antigüedad: 13 años, 3 meses
Puntos: 0
Exclamación Problema al redireccionar con header

En principio un saludo a todos y felicitaciones por este foro.

He creado una especie de muro de comentarios, vamos como un foro, para que la peña pueda participar, y cuado intento introducir un comentario me da un error, lo curioso es que el comentario se guarda en la base de datos perfectamente y si recargo la pagina aparece todo correcto con el comentario introducido, el error es este:

Warning: Cannot modify header information - headers already sent by (output started at /homepages/16/d375871330/htdocs/crearcomentario.php:1) in /homepages/16/d375871330/htdocs/crearcomentario.php on line 45


lo que quería es que una vez insertara el comentario, mediante un header volver a mostrar la pagina con el comentario ya introducido, ni que decir tiene que en local usando wamp funciona a las mil maravillas.

Este es le codigo del archivo, que esl el "action" de un "form":

Código PHP:
<?php
$conexion
=mysql_connect("AQUI LOS DATOS DEL SERVIDOR, USUARIO, CONTRASEÑA");
mysql_select_db("AQUI LA BASE DE DATOS",$conexion);

$nick=$_POST['usuario']; // recogemos mediante POST los names de los campos del formulario
$email=$_POST['email'];
$comentario=$_POST['comentario'];

function 
comprobar_email($email){
    
$mail_correcto 0;
    if ((
strlen($email) >= 6) && (substr_count($email,"@") == 1) && (substr($email,0,1) != "@") && (substr($email,strlen($email)-1,1) != "@")){
       if ((!
strstr($email,"'")) && (!strstr($email,"\"")) && (!strstr($email,"\\")) && (!strstr($email,"\$")) && (!strstr($email," "))) {
          
//miro si tiene caracter .
          
if (substr_count($email,".")>= 1){
             
//obtengo la terminacion del dominio
             
$term_dom substr(strrchr ($email'.'),1);
             
//compruebo que la terminación del dominio sea correcta
             
if (strlen($term_dom)>&& strlen($term_dom)<&& (!strstr($term_dom,"@")) ){
                
//compruebo que lo de antes del dominio sea correcto
                
$antes_dom substr($email,0,strlen($email) - strlen($term_dom) - 1);
                
$caracter_ult substr($antes_dom,strlen($antes_dom)-1,1);
                if (
$caracter_ult != "@" && $caracter_ult != "."){
                   
$mail_correcto 1;
                }
             }
          }
       }
    }
if (
$mail_correcto)
return 
1;
else
return 
0;

if((
$comentario == "") or ($nick=="") or ($email=="") or (comprobar_email($email) == 0))
{
header('location:comentarios.php');
}
else
{
$sql=" INSERT INTO comentarios VALUES(NULL,'$comentario','$nick','$email',now())";
$result=mysql_query($sql);
if(
$result)
{
header('location:comentarios.php');
}
}
?>
Si me podeis echar una mano estupendo, ya que cada vez que alguien entra en la pagina e intenta meter un comentario les da el error e intentan introducirlo otra vez y otra vez y me petan la base de datos...Gracias de antemano!!!
  #2 (permalink)  
Antiguo 28/07/2011, 04:32
Avatar de vgonga1986  
Fecha de Ingreso: marzo-2008
Ubicación: País de Pandereta
Mensajes: 1.021
Antigüedad: 16 años, 8 meses
Puntos: 253
Respuesta: Problema al redireccionar con header

El problema es que estás intentando enviar datos de cabecera en dos lugares diferentes, por lo que te dice aquí que no puedes.

Según tu mensaje la primera dirección la haces en la línea 1 de crearcomentario.php, seguramente será un session_start(), si no me equivoco. Y aquí intentas redireccionar con header(location:...). El código que has pegado es del fichero comentarios.php? Si no, vete a ese código y mira si tienes un session_start().

Y, añado, el tema de que en local no dé el error es simplemente porque en tu configuración local de PHP tendrás configurado que no te muestre los warnings, sólo los errors, y el servidor sí tendrá warnings, luego te lo muestra.

Es un error muy común, googlea y verás que puede deberse a muchas cosas, ve probando y darás con ello.

Un saludo.
__________________
¿Alguna pregunta, duda, acotación, nota, cuestión, reparo, comentario, demanda, crítica, interpretación, objeción, interrogante, discrepancia, observación, réplica, disquisición, apostilla o exégesis?
  #3 (permalink)  
Antiguo 28/07/2011, 08:02
Avatar de ArkangelGammar  
Fecha de Ingreso: enero-2011
Ubicación: <?php $persona->ubicacion('ArkangelGammar'); ?>
Mensajes: 179
Antigüedad: 13 años, 10 meses
Puntos: 19
Respuesta: Problema al redireccionar con header

Hace esto:

Cambia el

Código PHP:
header('location:comentarios.php'); 
Por:

Código PHP:
echo '<script>location.href = "comentarios.php"</script>';
die(); 
eso te redirije el sito a comentarios.php como si hubieses hecho click sobre un link. Es invisible al usuario.

Espero haber sido de utilidad.

Saludos cordiales
__________________
"No entiendes algo al menos que seas capaz de explicarselo a tu abuela.
Cada dia sabemos mas....y entendemos menos...."

A. Einstein - Genio mas alla de la razon.
  #4 (permalink)  
Antiguo 28/07/2011, 08:04
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problema al redireccionar con header

Aún así la redirección no va a funcionar de ningún modo mientras el script siga usando return.

El return detiene le ejecución del script en ese punto, ¿tiene algún beneficio?

No.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 28/07/2011, 08:08
Avatar de ArkangelGammar  
Fecha de Ingreso: enero-2011
Ubicación: <?php $persona->ubicacion('ArkangelGammar'); ?>
Mensajes: 179
Antigüedad: 13 años, 10 meses
Puntos: 19
Respuesta: Problema al redireccionar con header

En eso tenes razon pateketrueke, pero codigo aparte, el tema es sobre el error en la modificacion del header. De todas maneras, fijate que el return al parecer esta dentro de una funcion, y que ahora le tira error en el header, asi que la linea la esta procesando.

Saludos
__________________
"No entiendes algo al menos que seas capaz de explicarselo a tu abuela.
Cada dia sabemos mas....y entendemos menos...."

A. Einstein - Genio mas alla de la razon.
  #6 (permalink)  
Antiguo 28/07/2011, 08:11
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problema al redireccionar con header

Cuanta razón tienes ArkangelGammar, no me percate de la profundidad de dicha sentencia.

Lo curioso es que el mensaje de error dice que la salida de código se hace en la linea 1 del script que se muestra, ¿ese es todo el código o hay algo que estás omitiendo marcus69?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 28/07/2011, 08:37
Avatar de marcus69  
Fecha de Ingreso: julio-2011
Mensajes: 4
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Problema al redireccionar con header

Cita:
Iniciado por ArkangelGammar Ver Mensaje
Hace esto:

Cambia el

Código PHP:
header('location:comentarios.php'); 
Por:

Código PHP:
echo '<script>location.href = "comentarios.php"</script>';
die(); 
eso te redirije el sito a comentarios.php como si hubieses hecho click sobre un link. Es invisible al usuario.

Espero haber sido de utilidad.

Saludos cordiales
Muchisimas gracias a todos por molestaros en echarme una mano, y sobre todo a ArkangelGammar , ya que sustituyendo el el header por el script que has puesto se me ha solucionado, eres un crack, llevaba 2 días googleando y haciendo pruebas de todo tipo, como ya habreis notado soy nuevo en esto y ando un poco perdido, lo curioso es que no acabo de entender porque me daba el fallo..., mil gracias y un saludo!!!!
  #8 (permalink)  
Antiguo 28/07/2011, 08:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 7 meses
Puntos: 2534
Respuesta: Problema al redireccionar con header

Cita:
Iniciado por marcus69 Ver Mensaje
[...] lo curioso es que no acabo de entender porque me daba el fallo... [...]
Si aún tienes curiosidad por conocer la razón del fallo, lee lo siguiente:

http://www.forosdelweb.com/wiki/PHP:..._on_line_4"%3F
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: header, mysql, redireccionar, sql, formulario, usuarios
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 21:28.