Redireccionar despues de enviar formulario.

52132 visitas 13 respuestas

Hola:

Llevo unos dias intentando solucioar un problemilla; quiero que una vez que envio un formulario se redireccione el explorador a otra página.

El formulario lo tengo en un html, y al dar al botón llamo a un php, desde este php es desde donde quiero ir a una web dada.

El codigo del form.php es:

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
 </head>
 <body>
 <?PHP
      $to = "correo@correo.com";
      $nombre = "$txtNombre";
      $telefono = "$txtTelefono";
      $email = "$txtEmail";
      $promocion = "$ListaPromo";
      $zona = "$txtZona";
      $precio = "$txtPrecio";
      $msg .= "\\nNombre: ".$nombre."\\r\\n";
      $msg .= "Telefono: ".$telefono."\\r\\n";
      $msg .= "e-mail: ".$email."\\r\\n";
      $msg .= "Promocion: ".$promocion."\\r\\n";
      $msg .= "Zona Preferida: ".$zona."\\r\\n";
      $msg .= "Precio no superior a: ".$precio."\\r\\n";
        mail($to, "Consulta desde la web", $msg);
      header("Location: http://www.pgina.com");
    ?>
    </body>
    </html>

El error que pega es:

 Warning: Cannot modify header information - headers already sent by (output started at /var/www/vhost/pagina.com/home/html/pagina/form.php:6) in /var/www/vhost/pagina.com/home/html/pagina/form.php on line 22

He quitado las etiquetas de head, de html y de todo, y no hay manera de arreglarlo.

Supongo que estaréis hasta las narices de este tipo de solucionar este problema, pero es que me he atrancado aqui, y de aqui o salgo.

Espero que me podáis ayudar, muchísimas gracias a todos, un saludo.

por Quique desde España

Registrado desde: 29 Apr 05

Respuestas

1 0

Puedes hacerlo con javascript tb, pero es más cutre ?

en lugar del header que te va a petar por haber enviado al navegador codigo, usa el location.

<script>
     window.location.href='http://www.paginadestino.com';
 </script>

no se si funcionará

por klaus201 desde España

Registrado desde: 27 Oct 03
0 0

Si que funciona, así lo tenía hecho, pero me gustaría hacerlo en PHP, se que se puede y además es un poco mas mejor,no? jeje.

Muchas gracias por tu respuesta, a ver si alguien puede decirme como hacerlo en PHP.

Gracias a todos!!!

por Quique desde España

Registrado desde: 29 Apr 05
0 0

el header, lo tienes que poner antes de cualquier salida al navegador.

por nils desde -

Registrado desde: 22 Aug 02
0 0

Muchas gracias por tu respuesta nils, pero pasa una cosa; no tengo ni idea de esto y el problema es que no se que linea es una salida al navegador.

Siento la torpeza, pero espero que me lo podais explicar.

Gracias y un saludo.

por Quique desde España

Registrado desde: 29 Apr 05
0 0

Cualquier cosa que se muestre al navegador, un espacio es una salida, cualquier html. Los headers tienen que estar antes de todo

por infinit desde España

Registrado desde: 09 Feb 04
0 0

Un espacio en blanco quizas :D

http://www.php.net/header

por Gerald desde Perú

Registrado desde: 17 Oct 03
1 0

Hola!!

Se que ya es algo tarde para el que puso el post, pero espero que le sirva a la gente que entre despues. :)

 <?php echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=http://www.tusitio.com/nueva_pagina.php\">"; ?>

ese código lo pones despues del codigo que quieras que haga tu página ej.

<html>
<head><title>pagina antigua</title></head>
 <body>
 //código html ó php ó nada :P
 <form>
 </form>
 //código html ó php ó nada :P
 //por último y antes del fin del body pones tu código
 <?php echo "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0;URL=http://www.tusitio.com/nueva_pagina.php\">"; ?>
</body>
 </html>

Espero que les sirva de algo hasta luego

por kano desde México

Registrado desde: 09 Nov 06
0 0

Es facil pon al principio de la pag ob_start(); antes de HTML al principio de todo

por naderST desde Venezuela

Registrado desde: 04 Aug 06
0 0

Buenas, mi problema es el siguiente, necesito redireccionar a la misma pagina para asi enviar los datos; estos datos los envio por medio de un select, pero no se como hacer para redireccionar a esa misma pagina y que me muestre los datos de los que envie por el POST a la misma pagina en una table.... les agradeceria una pronta respueta..

por faraona desde Venezuela

Registrado desde: 06 Jun 07
0 0

para redireccionarlo a la misma pagina simplemente en el action del form colocas el nombre de la pagina. y para que recuperes los varoles que enviaste se me ocurre que con variables de sesion se puede hacer.

action='paginaactual.php'

si puedes mostrar el codigo seria mas facil ayudarte.

exitos

por ji7o desde Colombia

Registrado desde: 11 Nov 06
0 0

pues como te dijeron, tienes que colocal el header() antes de cualkier salida, osea boora las etiketas HTML del comienzso y listo =P algo asi kedaria:

<?PHP
$to = "correo@correo.com";
$nombre = "$txtNombre";
$telefono = "$txtTelefono";
$email = "$txtEmail";
$promocion = "$ListaPromo";
$zona = "$txtZona";
$precio = "$txtPrecio";
$msg .= "\\nNombre: ".$nombre."\\r\\n";
$msg .= "Telefono: ".$telefono."\\r\\n";
$msg .= "e-mail: ".$email."\\r\\n";
$msg .= "Promocion: ".$promocion."\\r\\n";
$msg .= "Zona Preferida: ".$zona."\\r\\n";
$msg .= "Precio no superior a: ".$precio."\\r\\n";
mail($to, "Consulta desde la web", $msg);
header("Location: http://www.pgina.com");
?>
</body>
</html>

por DarkAngel9 desde Perú

Registrado desde: 01 May 07
0 0

Hola! Gracias por la ayuda desde siempre es un placer saber que hay gente que está dispuesta a ayudar! Pego mi codigo para que me ayuden a redireccionar mi formulario de contacto a una pagina para que se confirme que el mensaje ha sido enviado "enviado.html" o que hay un error "error.html".

<?php

if(!$_POST) exit;

$email = $_POST['email'];


//$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email )){
    $error.="Coloque su direccion de e-mail";
    $errors=1;
}
if($errors==1) echo $error;
else{
    $values = array ('name','email','message');
    $required = array('name','email','message');

    $your_email = "florencia.caceres1@gmail.com";
    $email_subject = "Consulta-".$_POST['subject'];
    $email_content = "new message:\n";

    foreach($values as $key => $value){
      if(in_array($value,$required)){
        if ($key != 'subject' && $key != 'company') {
          if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; }
        }
        $email_content .= $value.': '.$_POST[$value]."\n";
      }
    }

    if(@mail($your_email,$email_subject,$email_content)) {
        echo 'Message sent!'; 
    } else {
        echo 'ERROR!';
    }
}
?>

ESPERO AYUDA URGENTE! MUCHAS GRACIAS !!!!!!!!!!!!!!!!!!!!

por Elsantodiseni desde Argentina

Registrado desde: 02 Oct 11
0 0

Mi amigo, no se si necesites aun la ayuda. Te dejo el codigo de todos modos.

Tu código php quedaría así:

<?php

if(!$_POST) exit;

$email = $_POST['email'];


//$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i', $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
if(!eregi("^[a-z0-9]+([_\\.-][a-z0-9]+)*" ."@"."([a-z0-9]+([\.-][a-z0-9]+)*)+"."\\.[a-z]{2,}"."$",$email )){
$error.="Coloque su direccion de e-mail";
$errors=1;
}
if($errors==1) echo $error;
else{
$values = array ('name','email','message');
$required = array('name','email','message');

$your_email = "florencia.caceres1@gmail.com";
$email_subject = "Consulta-".$_POST['subject'];
$email_content = "new message:\n";

foreach($values as $key => $value){
if(in_array($value,$required)){
if ($key != 'subject' && $key != 'company') {
if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS'; exit; }
}
$email_content .= $value.': '.$_POST[$value]."\n";
}
}

if(mail($your_email,$email_subject,$email_content)) {
    header("Location: enviado.html");
die;
  }
  else {
    header("Location: error.html");
die;
  }
}
?>

en donde dice header("Location: enviado.html"); y header("Location: error.html"); dejadlo así, no tienes que ponerle http://www.llllll.com porque si le pones eso te va pegar un error.

Nota: Los archivos enviado.html y error.html

tienen que estar juntos con el archivo php, (en la misma carpeta) no se que nombre le vayas a dar supongamos que sea enviar.php.

Espero haberte ayudado querido amigo.

por Danniel desde Guatemala

Registrado desde: 31 Jan 12