Foros del Web » Programando para Internet » PHP »

formulario php: problemas con header

Estas en el tema de formulario php: problemas con header en el foro de PHP en Foros del Web. Buenos días estimada gente de este buen foro. Estuve leyendo muchos post de esta página y gracias a ustedes he aprendido mucho pero ahora estoy ...
  #1 (permalink)  
Antiguo 27/12/2010, 16:47
 
Fecha de Ingreso: julio-2010
Mensajes: 6
Antigüedad: 13 años, 8 meses
Puntos: 0
formulario php: problemas con header

Buenos días estimada gente de este buen foro. Estuve leyendo muchos post de esta página y gracias a ustedes he aprendido mucho pero ahora estoy con un problema que no puedo resolver.
Hice un pequeño formulario que va en varias páginas de mi sitio... incluído el home. El mismo me envía la información depositada a una cuenta de correo... con eso no tengo problemas.

Todo andaba perfectamente pero hice unas modificaciones separando el formulario en un archivo llamado: formulario.php para poder ubicarlo en varias páginas del site y agregué un script en javascript para que salga una ventana de "formulario enviado" y lo redirecciono al home (aunque en realidad me gustaría saber como redireccionar a la página anterior si son tan amables de darme una mano con eso )

Mi idea era enviar el formulario... que salga la ventana de aviso... clic en aceptar y regreso a la misma pagina sin tener que ir a otra página aparte para no tener que volver manualmente.

Mi problema es el típico caso del warning: "Cannot modify header information - headers already sent" en la línea del header del formulario.php que está a continuación:
Código PHP:
<?php $formulario '<form action="formulario.php" method="post" name="formulario_consulta" >
          <div id="titucon">Consultas</div>
          <div id="contenedor-formulario" >
            <label>Nombre</label>
            <input class="formulario2" name="nombre" type="text" size="22" maxlength="120" />
            <label>E-mail</label>
            <input class="formulario2" name="mail" type="text" value="@" size="22" maxlength="120" />
            <label>Consulta</label>
            <textarea class="formulario1 + textarea"  name="mensaje" cols="18" rows="3" id="cajaT" title="consulta a zona verde" dir="ltr" lang="es"></textarea>
            <br />
            <div style=" width:150px; margin-top:5px; line-height:2em"> <span>Deseo recibir el News</span>
              <input name="noti" type="checkbox" class="check" lang="es Espa&ntilde;ol (Espa&ntilde;a)" value="si" checked />
            </div>
            <input class="botones" name="borrar" type="reset" lang="es Espa&ntilde;ol (Espa&ntilde;a)" value="Borrar" />
            <input  class="botones" name="enviar" type="submit" value="Env&iacute;ar" onClick="aviso()" /> 
          </div>
          <div id="contenedor-comentario-formulario">En breve te responeremos a tu dirección de e-mail</div>
        </form>'
;        
$nombre $_POST['nombre'];
$mail $_POST['mail'];
$noti $_POST['noti'];

$header 'From: ' $mail " \r\n";
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
$header .= "Mime-Version: 1.0 \r\n";
$header .= "Content-Type: text/plain";

$mensaje "Esta consulta fue enviada por:" $nombre " \r\n";
$mensaje .= "Su e-mail es: " $mail " \r\n";
$mensaje .= "desea recibir news: " $noti " \r\n";
$mensaje .= "Mensaje: " $_POST['mensaje'] . " \r\n";
$mensaje .= "Enviado el " date('d/m/Y'time());

$para '[email protected]';
$asunto 'Consulta desde zonaverde';

//mail($para, $asunto, $mensaje, $header);

echo '<script language = "javascript">
function aviso(){
alert("Su mensaje ha sido enviado. Gracias por estar en contacto con nosotros");
}
</script>'
header ("Location: home.php");?>
Y en la home.php tengo:
Código PHP:
<?php require ("formulario.php"); ?>
arriba de todo... y donde quiero que aparezca el formulario dentro de lo que es en si el sitio realizo una llamada a la variable
Código PHP:
$formulario 

El otro problema que me da el código es que cuando dejo todo comentado excepto la linea del header para ver si puedo solucionar por lo menos ese problema (el del header) entonces el home también me tira el error de: "Error 310 (net::ERR_TOO_MANY_REDIRECTS): Demasiados redireccionamientos."

Me gustaría saber si me estoy equivocando en la manera en que utilizo el redireccionamiento y también como redireccionar a una página anterior desde la página del formulario.

Muchas gracias
  #2 (permalink)  
Antiguo 27/12/2010, 16:51
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Tema movido desde Web general

Me parece que la cabecera debes declararla antes de enviar información a la consola (echo)

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 27/12/2010, 16:56
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: formulario php: problemas con header

Como dijo caricatos el error esta acá:

Código PHP:
Ver original
  1. echo '<script language = "javascript">
  2. function aviso(){
  3. alert("Su mensaje ha sido enviado. Gracias por estar en contacto con nosotros");
  4. }
  5. </script>'
  6.  
  7. header ("Location: home.php");

No puedes imprimir nada antes de declarar un header, y menos si vas a realizar un redirect. Además que sentido tiene hacer algo con el código si no va a llegar a ejecutarse.

PD: a todo esto también te falta cerrar con ; el echo del script

Última edición por walterdevel; 27/12/2010 a las 16:58 Razón: otra corrección
  #4 (permalink)  
Antiguo 27/12/2010, 16:58
 
Fecha de Ingreso: julio-2010
Mensajes: 6
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: formulario php: problemas con header

Cita:
Iniciado por caricatos Ver Mensaje
Tema movido desde Web general

Me parece que la cabecera debes declararla antes de enviar información a la consola (echo)

Saludos
Gracias... disculpá que me equivoque en el tema del foro.

Si.... probé sacando el echo... probablemente sea una solución pero al ponerlo comentado el home.php me tira: "Error 310 (net::ERR_TOO_MANY_REDIRECTS): Demasiados redireccionamientos."

Saludos
  #5 (permalink)  
Antiguo 27/12/2010, 17:00
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: formulario php: problemas con header

Seguramente estás redireccionando siempre la página sobre si misma. El código que muestras es de home.php?
  #6 (permalink)  
Antiguo 27/12/2010, 17:07
 
Fecha de Ingreso: julio-2010
Mensajes: 6
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: formulario php: problemas con header

gracias... corregido lo último pero tengo problemas con el header y quitándolo tengo problemas de too many redirects. El 1º código es el del formulario.php
El del home es:
Código PHP:
<?php require ("formulario.php"); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<link href="estilos/ZonaVerde_3_a.css" rel="stylesheet" type="text/css" media="all" />
<link href="estilos/reset-fonts-grids-min.css" rel="stylesheet" type="text/css" media="all" />
<link href="fuente1/stylesheet.css" rel="stylesheet" type="text/css" media="all" />
</head>
<body>
   <div id="navegadorAlt"><a href="index.php" class="clase2">Inicio</a> <a href="estetica-aparatos.html" class="clase2">Est&eacute;tica</a> <a href="herboristeria.html" class="clase2">Herborister&iacute;a</a> <a href="hipertensos.html" class="clase2">Hipertensos</a><a href="diabeticos.html" class="clase2">Diab&eacute;ticos</a> <a href="celiacos-libre-gluten.html" class="clase2">Cel&iacute;acos</a> <a href="suplementos.html" class="clase2">Suplementos</a> <a href="nutricion.html" class="clase2">Nutrici&oacute;n</a> <a href="ultrtech.html" class="clase2">Ultratech</a> </div>
<div id="cuerpoProncipal">
    <div id="marquesina"> <img src="imagenes_dietetica_estetica/marquesina_r1_c1.jpg" alt="Zonaverde Diet&eacute;tica" width="700" height="157" title="Zona Verde Diet&eacute;tica: donde encontrar&aacute;s todo para una alimentaci&oacute;n sana" /><img src="imagenes_dietetica_estetica/marquesina_r2_c1.jpg" alt="Marcelo T. De Alvear 110" width="523" height="56" title="Marcelo T. De Alvear 110 | Resistencia Chaco" /><img src="imagenes_dietetica_estetica/marquesina_r2_c2.gif" alt="Agregarnos al messenger solo en IE" width="177" height="56" border="0" usemap="#Map" title="Consultas V&iacute;a Messenger solo en Internet Explorer" />
      <map name="Map" id="Map">
        <area shape="rect" coords="6,7,170,47" href="msnim:[email protected]" alt="Consultas V&iacute;a messenger" />
      </map>
    </div>
    <div id="barrasup"><a href="index.php" title="Volver" class="clase4 + home">INICIO</a><a href="home.html" title="Volver" class="clase4">PRINCIPAL</a><a href="calculo-indice-masa-corporal.html" title="&Iacute;ndice De Masa Corporal" class="clase4" style="width:149px">CALCUL&Aacute; TU IMC</a><a href="novedades-en-zonaverde.html" title="Comprar Tus Producto Aqu&iacute; Mismo" class="clase4">NOVEDADES</a> <a href="#cuerpoformulario" title="Mensaje a nuestra casilla de correo" class="clase4">CONSULTAS</a> <a href="dieta/dietas-zona-verde-dietetica.html" title="Consejos y Buenas Pr&aacute;cticas" class="clase4">DIETAS</a></div>
    <div id="cuerpo">
      <div id="contenido">
      <!--Contenido-->
    <div id="titular" class="fuente5">Zona Verde te da la bienvenida!</div>
    <div id="parrafos">
    <p>Estamos inaugurando nuestro "web site" para ofrecerte la alternativa de conocernos en la comodidad de tu hogar, ordenar cualquier producto sin moverte y sepas que podemos ayudarte a encontrar el equilibrio de una alimentación sana, saludable y sin privaciones. Como negocio espacializado en esta área disponemos de todos los productos imprescindibles para nutrir cuerpo y sentirse bien naturalmente. Este equilibrio establesce una mejora en la calidad de vida cotidiana, factor de gran importancia en los tiempos que vivimos, donde todo es vertiginoso y a veces uno no puede darse el tiempo de parar y por supuesto que comer sano ayuda a sobre llevar esto con mayor displicencia.</p>
    <br />
    <p>Una <span style="text-transform:uppercase">diet&Eacute;tica</span> no es un negocio común. Entendemos eso y damos una <span style="text-transform:uppercase">atenci&Oacute;n deferenciada</span>, asesorando a nuestros clientes sobre lo que desean comprar y que beneficios-bondades pueden tener en su salud y calidad de vida.</p>
    <br />
    <p>Nuestro Almacén Natural tiene todos los productos más solicitados por aquellos que  quieren cuidar su salud y quieren mejorar su calidad de vida, con un buen surtido de productos y marcas. Conocedores de todas las cuestiones comúnes a los interesados en productos naturales.</p>
    <br />
    <p><u>Contamos con una gran variedad de productos:</u> Complejos nutricionales para deporte: Ultra tech, línea completa para tonificación muscular y complementación nutricional saludable. Push, suplementos dietarios para deportistas que ayudan en la calidad de entrenamiento. <br />
      Extractos de hierbas naturales, hierbas deshidratadas fraccionadas de origen regional y envasados. Cereales, ositos de frutilla, avena y miel, almohaditas de frutillas, avellanas, miel, man&iacute; y salvado. Frutas disecadas: ananá, ciruelas, duraznos castañas de cajú, nueces, avellanas. Entre otros variados productos.</p>
      <br />
    <p>Celíacos, diab&eacute;ticos, hipertensos, entre otros, para quienes es importante cuidar su calidad de vida, no necesitan privarse a pesar de no poder disfrutar de las habituales  tentaciones convencionales. Disponen de variadas alternativas para tentanse sin descuidar su salud. Golosinas endulzadas de manera natural, dulce de leche y edulcorantes con estevia, hierba que remplaza al az&uacute;car a&ntilde;adiendo dulzor sin correr riesgos para que  los diabéticos puedan disfrutar. Premezclas sin gluten, galletitas y harina de arroz para que los celíacos puedan disfrutar de un postre o un bocadito sin preocupaciones. Para Hipertensos tambi&eacute;n  sal de mesa sin sodio, galletitas de arroz sin sal, hierbas de las más variadas para el tratamineto de esta dolencia. Todo el surtido de las marcas más importantes del mercado en cuidado de la salud: Blue Patna, Santa Maria, Macrobiótica, Riera, golosinas Golza y Benot.</p>
    <br />
    <p>Encontrarás en nuestro local un lugar propicio agradable donde realizar tus compras. Atención personalizada.</p>
    <p>Calidad y garantía sobre nuestros productos y tu satisfacción son nuestro capital más importante.</p>
    <p>Realiza tu pedido por teléfono y te enviamos tus productos por motomandado.</p>
    <p> V&iacute;a messenger o a través de este mismo canal podés dejar consultas y  te responderemos con gusto.</p>
<p>Suscribite a nuestro News y recib&iacute; novedades de productos.</p>
    <p>Pronto ofreceremos cosas muy interesantes a nuestro visitantes y por supuesto esperamos encuentren lo que buscan... </p>
    <div id="pregunta" class="fuente5">¿Vivir mejor acaso?</div>
    <p>Un saludo Cordial y nos encontramos en cualquier momento.</p>
    <p><em>El Equipo de Zona Verde</em></p>
    </div></div>
      <!--Contenido-->
      <div class="der"> 
      <div class="navegador + fuente5">
        <ul>
          <li><a href="estetica-aparatos.html" title="Cuidado del la piel y el cuerpo" class="clase3">Estética</a></li>
          <li><a href="herboristeria.html" title="Hierbas, ayudan a mejorar la salud" class="clase3">Herborister&iacute;a</a></li>
          <li><a href="adelgazantes.html" title="Productos para bajar de peso" class="clase3">Adelgazantes</a></li>
          <li><a href="hipertensos.html" title="Alimentos sin sal, sal con bajo contenido de sodio" class="clase3">Hipertensos</a></li>
          <li><a href="celiacos-libre-gluten.html" title="Alimentos sin gluten, fideos de arroz, galletas de arroz, premezclas para reposteria, galletitas" class="clase3">Celíacos</a></li>
          <li><a href="diabeticos.html" title="Edulcorantes a base de stevia, dulce de leche endulzado con stevia, golocinas sin azucar" class="clase3">Diabéticos</a></li>
          <li><a href="suplementos.html" title="Complejos nutricionales y alimenticios para cuidar tu figura." class="clase3">Suplementos</a></li>
          <li><a href="nutricion.html" title="Complejos Vitamínicos" class="clase3">Nutrición</a></li>
          <li><a href="ultrtech.html" title="Complejos Nutricionales Espaciales Para El Acodicionamiento Deportivo" class="clase3">Nutrición Deportiva</a></li>
          <li><a href="linea-verano.html" title="Completa línea de bronceadores" class="clase3">L&iacute;nea Verano</a></li>
        </ul>
      </div>
      </div><div class="navegador2" ></div>
      <div id="cuerpoformulario" style="clear:right">
       <?php echo $formulario?> 
      </div>
      <div id="publi" style="clear:right"><a href="ultrtech.html" title="Cremas">[+] Utratech</a><img src="imagenes_dietetica_estetica/forontal_ultra_tach_VITA.jpg" width="75" height="176" alt="Vita plus contiene todos los minerales para una alimenci&oacute;n balnceada" /></div>
    </div>
    <div class="fuente5" id="pie-pagina">
      <h2 class="titular-pie">Zona verde diet&eacute;tica</h2>
      <div id="datos-pie">
        <p>Marcelo T. De Alvear  110</p>
        <p>Tel.(03722)450124</p>
        <p> Resistemcia Chaco</p>
        <p><a href="mailto:[email protected]" class="mail" title="Enlace al cliente de correo predeterminado">Mail: [email protected]</a></p>
      </div>
      <div id="comentalo-ya">Comentalo Ya!!! </div>
      <a href="http://twitter.com/share" class="twitter-share-button" data-url="http://www.zonaverdedietetica.com.ar/" data-text="Twitteame!!!" data-count="none" data-lang="es">Tweet</a>
      <script type="text/javascript" src="http://platform.twitter.com/widgets.js"></script>
      <iframe id="face-book" src="http://www.facebook.com/plugins/like.php?href=http%3A%2F%2Fwww.zonaverdedietetica.com.ar%2F&amp;layout=button_count&amp;show_faces=true&amp;width=100&amp;action=like&amp;font=arial&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" allowtransparency="true"></iframe>
    </div>
</div>
<div id="liston"><a href="ofertas.html" class="clase1">OFERTAS</a></div>
</body>
</html>
  #7 (permalink)  
Antiguo 27/12/2010, 17:17
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: formulario php: problemas con header

Ok, pero explicame para que haces esto:


Código PHP:
header ("Location: home.php"); 
  #8 (permalink)  
Antiguo 27/12/2010, 17:59
 
Fecha de Ingreso: julio-2010
Mensajes: 6
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: formulario php: problemas con header

Cita:
Iniciado por walterdevel Ver Mensaje
Ok, pero explicame para que haces esto:


Código PHP:
header ("Location: home.php"); 
Con esa intento volver a la página desde la cual se envió el formulario... pero seguramente lo estoy haciendo mal porque como el formulario está en varias páginas quiero saber como hago para que vuelva a la página anterior de la cual se envió. Se entiende?
  #9 (permalink)  
Antiguo 27/12/2010, 18:04
 
Fecha de Ingreso: diciembre-2010
Mensajes: 788
Antigüedad: 13 años, 4 meses
Puntos: 51
Respuesta: formulario php: problemas con header

Lo que tienes que hacer es, tratar la llegada de parámetros post solo si se envió el formulario y no siempre como haces. Luego, si se envio correctamente el formulario puedes hacer algo así:

Código PHP:
$loc $_SERVER['HTTP_REFERER'];

header("Location: $loc"); 
pero no envies nada a la pantalla, o sea no imprimas nada antes.
  #10 (permalink)  
Antiguo 27/12/2010, 18:07
 
Fecha de Ingreso: julio-2010
Mensajes: 6
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: formulario php: problemas con header

Ok... walterdevel voy a probar eso... y después les cuento.
  #11 (permalink)  
Antiguo 27/12/2010, 19:51
 
Fecha de Ingreso: julio-2010
Mensajes: 6
Antigüedad: 13 años, 8 meses
Puntos: 0
Respuesta: formulario php: problemas con header

Gracias por toda la ayuda brindada hasta ahora.
Bueno les comento bien que pasó... estoy probando desde un principio todo desde el localhost... aclaro por si acaso.
Hice un código de validación que funciona bien... lo probé aparte y anda... y después lo introduje en el formulario.php y también agregué lo que me dijo el colega walterdevel

En el home.php me decía con la página en fondo blanco "el campo $campo no puede estar vacío" entonces dejé como comentario la respuesta que me dá si los campos están vacíos para ver si me puede cargar la página home.php pero por ahora lo que pasa es que se ve todo en blanco nada más.

Por si no se entendió bien esto es un resumen de lo que quiero hacer:
Como el formulario sale en varias páginas del sitio lo tengo asignado a una variable $formulario dentro de formulario.php. El mismo hace referencia a formulario.php (fisicamente están juntos) donde hace la verificación de los datos. Ahora lo que yo busco son 2 cosas:
Que al hacer clic en enviar del formulario me salga una ventana en javascript diciendo "mensaje enviando" y lo otro que quiero es que al aceptar ese mensaje vuelva a verse la página desde donde cargué el formulario; como por ejemplo la página home.php
aquí el código de como quedó el formulario.php--->
Código PHP:
<?php $formulario '<form action="formulario.php" method="post" name="formulario_consulta" >
          <div id="titucon">Consultas</div>
          <div id="contenedor-formulario" >
            <label>Nombre</label>
            <input class="formulario2" name="nombre" type="text" size="22" maxlength="120" />
            <label>E-mail</label>
            <input class="formulario2" name="mail" type="text" value="@" size="22" maxlength="120" />
            <label>Consulta</label>
            <textarea class="formulario1 + textarea"  name="mensaje" cols="18" rows="3" id="cajaT" title="consulta a zona verde" dir="ltr" lang="es"></textarea>
            <br />
            <div style=" width:150px; margin-top:5px; line-height:2em"> <span>Deseo recibir el News</span>
              <input name="noti" type="checkbox" class="check" lang="es Espa&ntilde;ol (Espa&ntilde;a)" value="si" checked />
            </div>
            <input class="botones" name="borrar" type="reset" lang="es Espa&ntilde;ol (Espa&ntilde;a)" value="Borrar" />
            <input  class="botones" name="enviar" type="submit" value="Env&iacute;ar" onClick="aviso()" /> 
          </div>
          <div id="contenedor-comentario-formulario">En breve te responeremos a tu dirección de e-mail</div>
        </form>'
;                

$arrCampos= array('nombre''mail''noti');

$vacio=false;

foreach(
$arrCampos as $campo)
{
    
    if(empty(
$_REQUEST[$campo]))
    {
        
/*echo "Error: el campo $campo no puede estar vac&iacute;o."*/;
        exit();        
        
$vacio=true;
    }
}  

if (!
$vacio) {
            
$nombre $_POST['nombre'];
            
$mail $_POST['mail'];
            
$noti $_POST['noti'];

            
$header 'From: ' $mail " \r\n";
            
$header .= "X-Mailer: PHP/" phpversion() . " \r\n";
            
$header .= "Mime-Version: 1.0 \r\n";
            
$header .= "Content-Type: text/plain";

            
$mensaje "Esta consulta fue enviada por:" $nombre " \r\n";
            
$mensaje .= "Su e-mail es: " $mail " \r\n";
            
$mensaje .= "desea recibir news: " $noti " \r\n";
            
$mensaje .= "Mensaje: " $_POST['mensaje'] . " \r\n";
            
$mensaje .= "Enviado el " date('d/m/Y'time());

            
$para '[email protected]';
            
$asunto 'Consulta desde zonaverde';

//mail($para, $asunto, $mensaje, $header);

/*echo '<script language = "javascript">
function aviso(){
alert("Su mensaje ha sido enviado. Gracias por estar en contacto con nosotros");
}
</script>';*/
            
$loc $_SERVER['HTTP_REFERER']; 

            
header("Location: $loc");
            }

?>

Etiquetas: header, formulario
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 04:08.