51066 visitas 13 respuestas

Redireccionar despues de enviar formulario.

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

hace: 29 Apr 05

Respuestas

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á

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!!!

0

por Quique

hace: 29 Apr 05

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

0

por nils

hace: 29 Apr 05

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.

0

por Quique

hace: 30 Apr 05

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

0

Un espacio en blanco quizas :D [URL]http://www.php.net/header

0

por Gerald

hace: 30 Apr 05

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

0

por kano

hace: 09 Nov 06

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

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..

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

0

por ji7o

hace: 12 Jun 07

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>
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[] = pregmatch('/\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 !!!!!!!!!!!!!!!!!!!!

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[] = pregmatch('/\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.

0

o busca en nuestros foros