Foros del Web » Programando para Internet » PHP »

Header Location no me redirecciona en correo web

Estas en el tema de Header Location no me redirecciona en correo web en el foro de PHP en Foros del Web. Hola. Estoy intentando hacer un header("Location: http://www.webcualquiera.com/"); dentro de un formulario con mail pero no me redirecciona: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: Ver original < form ...
  #1 (permalink)  
Antiguo 07/06/2011, 09:24
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Header Location no me redirecciona en correo web

Hola.

Estoy intentando hacer un header("Location: http://www.webcualquiera.com/"); dentro de un formulario con mail pero no me redirecciona:

Código HTML:
Ver original
  1. <form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post" id="formulario-contacto" class="formulario-contratar-online">
  2.                 <fieldset class="fieldset-formulario-contratar-online">
  3.                 <legend class="legend-formulario-contratar-online">Rellene los siguientes campos</legend>
  4.                 <!--<div class="etiquetas-formulario">-->
  5.                 <label for="nombrecomercial">* Nombre comercial:<br />  
  6.                 <input type="text" id="nombrecomercial" name="nombrecomercial" value="<?php if(isset($_POST['nombrecomercial']) && $_POST['nombrecomercial'] == "") {echo "Incompleto";} else {echo $_POST['nombrecomercial'];} ?>" size="40" />
  7.                 </label><br />
  8.                 <label for="titulodelmensaje">Título del mensaje:<br />
  9.                 <input type="text" id="titulodelmensaje" name="titulodelmensaje" value="<?php echo $_POST['titulodelmensaje'] ?>" size="40" />
  10.                 </label><br />                                                          
  11.                 <label for="condiciones-contratacion" class="label-condiciones-contratacion"><input type="checkbox" name="condiciones" <?php if (isset($_POST['condiciones']) && $_POST['condiciones'] != "") { echo  " checked='checked'"; }?>      
  12.                  />              
  13.                   <a href="politica-de-privacidad.php" class="condiciones-contratacion">He leído la política de privacidad</a><a href="#" class="condiciones-contratacion">y</a></span><a href="/condiciones-de-uso.php" class="condiciones-contratacion">acepto las condiciones de uso.</a>                    
  14.                   </label>
  15.                 <div id="enviar-formulario-contratar-online">
  16.                 <input type="submit" value="Enviar" class="boton-enviar" name="enviar" /><br />
  17.                 <span class="nota-formulario">* Campo requerido</span>
  18.                 </div>                
  19.                 </fieldset>
  20.             </form>

el código php:

Código PHP:
Ver original
  1. <?php              
  2.             if(isset($_POST['enviar']))
  3.                 {  
  4.                     if ($_POST['condiciones'] == "") { echo  "Marque las condiciones<br>"; }
  5.                     /*elseif ($_POST['condiciones'] != "")
  6.                     {echo  "Condiciones aceptadas<br>";}*/
  7.                     if ($_POST['nombrecomercial'] == "Incompleto" or $_POST['nombrecomercial'] == "")
  8.                     {echo "Rellene el nombre comercial <br />";}
  9.                     if ($_POST['titulodelmensaje'] == "Incompleto" or $_POST['titulodelmensaje'] == "")
  10.                     {echo "Rellene el título <br />";}     
  11.                     elseif($_POST['nombrecomercial'] != "" && $_POST['titulodelmensaje'] != "" && $_POST['condiciones'] != "") {       
  12.                     //------------------ Aquí preparo la función mail          
  13.                     $para  = '[email protected]';
  14.                     // asunto
  15.                     $asunto = 'Formulario de contacto';
  16.                     // mensaje
  17.                     $mensaje = "Nombre comercial: " .$_POST['nombrecomercial']. "\n";
  18.                     $mensaje .= "Título del mensaje: " .$_POST['titulodelmensaje']. "\n";                                          
  19.                     // Enviarlo
  20.                     mail($para, $asunto, $mensaje, $cabaceras);
  21.                     header("Location: http://www.webcualquiera.com/");
  22.                    
  23.                     }                                                          
  24.                 }              
  25.             ?>

¿No es posible hacer ahi la función header?

Saludos.
  #2 (permalink)  
Antiguo 07/06/2011, 09:26
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: Header Location no me redirecciona en correo web

pero simplemente no te redirecciona o no te redirecciona y te da el warning de que ya has enviado algo antes ?
  #3 (permalink)  
Antiguo 07/06/2011, 09:31
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Header Location no me redirecciona en correo web

Hola iviamontes.

Sí, también me da el Warning:

Cita:
Warning: Cannot modify header information - headers already sent by (output started at /home/... etc etc) in /home/... etc etc on line 55
  #4 (permalink)  
Antiguo 07/06/2011, 09:34
Avatar de ActerMarking  
Fecha de Ingreso: noviembre-2010
Mensajes: 6
Antigüedad: 13 años, 5 meses
Puntos: 2
De acuerdo Respuesta: Header Location no me redirecciona en correo web

Pues la verdad te recomiendo que haga un condicional para que php pueda asimilar a lo que le mandas ejemplo puedes agregarle a tu codigo lo que es un condicional esperando que el mensaje se envie para poder actuar al redireccionamiento:

Código PHP:
Ver original
  1. $enviando_datos=mail($para, $asunto, $mensaje, $cabaceras);
  2. if($enviando_datos==true){
  3.   header("location:pagina_deseada.php");
  4. }else{
  5.  //El Mensaje no se pudo enviar
  6. }

Espero que te pueda servir porque asi le dices al php que cuando envie el
mail pues entonces me redireccionas.!

Saludos!
  #5 (permalink)  
Antiguo 07/06/2011, 09:38
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 13 años, 6 meses
Puntos: 511
Respuesta: Header Location no me redirecciona en correo web

Puedes utilizar la siguiente sentencia


Código PHP:
Ver original
  1. echo "<head><meta http-equiv='refresh' content='2; url=tupagina.com'></head>";

Esta sentencia te redirecciona dependiendo de un tiempo definido en cual configuras en

content='2

Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #6 (permalink)  
Antiguo 07/06/2011, 09:46
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: Header Location no me redirecciona en correo web

solo da el warning cuando tienes una salida antes del header, estamos seguros que no entra a otro de los if antes ???
  #7 (permalink)  
Antiguo 07/06/2011, 13:05
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Header Location no me redirecciona en correo web

Cita:
Iniciado por skiper0125 Ver Mensaje
Puedes utilizar la siguiente sentencia


Código PHP:
Ver original
  1. echo "<head><meta http-equiv='refresh' content='2; url=tupagina.com'></head>";

Esta sentencia te redirecciona dependiendo de un tiempo definido en cual configuras en

content='2

Saludos
Hola, es una opción que me sirve, sin embargo me gustaría aprender con header


Cita:
Iniciado por ActerMarking Ver Mensaje
Pues la verdad te recomiendo que haga un condicional para que php pueda asimilar a lo que le mandas ejemplo puedes agregarle a tu codigo lo que es un condicional esperando que el mensaje se envie para poder actuar al redireccionamiento:

Código PHP:
Ver original
  1. $enviando_datos=mail($para, $asunto, $mensaje, $cabaceras);
  2. if($enviando_datos==true){
  3.   header("location:pagina_deseada.php");
  4. }else{
  5.  //El Mensaje no se pudo enviar
  6. }

Espero que te pueda servir porque asi le dices al php que cuando envie el
mail pues entonces me redireccionas.!

Saludos!
He probado esa opción y tampoco:

Código PHP:
Ver original
  1. <?php              
  2. if(isset($_POST['enviar']))
  3.       {  
  4.       if ($_POST['condiciones'] == "") { echo  "Marque las condiciones<br>"; }
  5.       /*elseif ($_POST['condiciones'] != "")
  6.       {echo  "Condiciones aceptadas<br>";}*/
  7.       if ($_POST['nombrecomercial'] == "Incompleto" or $_POST['nombrecomercial'] == "")
  8.       {echo "Rellene el nombre comercial <br />";}
  9.       if ($_POST['titulodelmensaje'] == "Incompleto" or $_POST['titulodelmensaje'] == "")
  10.       {echo "Rellene el título <br />";}      
  11.       elseif($_POST['nombrecomercial'] != "" && $_POST['titulodelmensaje'] != "" && $_POST['condiciones'] != "") {        
  12.       //------------------ Aquí preparo la función mail          
  13.       $para  = '[email protected]';
  14.       // asunto
  15.       $asunto = 'Formulario de contacto';
  16.       // mensaje
  17.       $mensaje = "Nombre comercial: " .$_POST['nombrecomercial']. "\n";
  18.       $mensaje .= "Título del mensaje: " .$_POST['titulodelmensaje']. "\n";                 // Enviar datos
  19.       $enviando_datos=mail($para, $asunto, $mensaje, $cabaceras);
  20.       if($enviando_datos==true){
  21.       header("Location: /zona.php");
  22.       }else{
  23.       //El Mensaje no se pudo enviar
  24.       }
  25.     }                                                          
  26.       }              
  27. ?>

Me sigue dando error.

Cita:
Iniciado por iviamontes Ver Mensaje
solo da el warning cuando tienes una salida antes del header, estamos seguros que no entra a otro de los if antes ???
La verdad es que no logro verlo...
  #8 (permalink)  
Antiguo 07/06/2011, 13:07
Avatar de iviamontes  
Fecha de Ingreso: enero-2011
Ubicación: $cubano->Arg->Mendoza
Mensajes: 1.184
Antigüedad: 13 años, 3 meses
Puntos: 209
Respuesta: Header Location no me redirecciona en correo web

te fijaste en lo que te dije ???? verifica bien eso, pq a lo mejor es que cumple con alguno de los if que tienes y entonces imprime algo y despues entra al if del mail
  #9 (permalink)  
Antiguo 07/06/2011, 19:51
Avatar de kahlito
Colaborador
 
Fecha de Ingreso: marzo-2003
Ubicación: En el Estrecho y el mar
Mensajes: 2.936
Antigüedad: 21 años, 1 mes
Puntos: 65
Respuesta: Header Location no me redirecciona en correo web

Hola de nuevo iviamontes.

Pues creo que ahora sí... después de mucho me acabo de dar cuenta de esta linea por ejemplo:

Código PHP:
Ver original
  1. <input type="text" id="nombrecomercial" name="nombrecomercial" value="<?php if(isset($_POST['nombrecomercial']) && $_POST['nombrecomercial'] == "") {echo "Incompleto";} else {echo $_POST['nombrecomercial'];} ?>" size="40" />

Así que he sacado el script php de la zona del mail y del correo en general a la parte superior de la web como encabezado o inicio y así no me coge esa "salida/output" y ya todo bien, no se si será lo más correcto pero con eso empieza a funcionar.

También me ha servido mirar esto de la Wiki del foro:

http://www.forosdelweb.com/wiki/PHP:...n_line_4%22%3F

Gracias iviamontes, ActerMarking, skiper0125 por vuestra ayuda

Etiquetas: correo, header, location
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 19:41.