PREGUNTA: ¿Cómo puedo enviar a mi visitante a otra página, justo después de que me haya enviado mi formulario?

R: Eso depende. Si estás utilizando un script CGI para procesar los formularios (que es el método recomendado) entonces esa utilidad simplemente estará ahí. Para hacerlo solamente tienes que envíes al CGI la dirección URL a la que quieres que vaya tu visitante en una entrada oculta, o puede especificarse en el mismo script del CGI. De todas formas, debes consultar la documentación de ese script.

Si estás utilizando formularios de correo, todavía podemos hacer algo. Aunque ten presente que, dependiendo del navegador del visitante, pueden suceder cosas impredecibles. Algunos visitantes pueden tener problemas enviando los datos. (¿Cuántos? ¿El 5%, el 20%? ¿Más? No tengo ni idea).

Además, el correo requiere Javascript, y si la gente no lo tiene activado, entonces no se redireccionarán. Y ahora que he puesto pegas, y he avisado, aquí tienes como hacer el redireccionamiento. Sólo tienes que añadir estos trozos de javascript al formulario de correo:

Primero añade esto en la sección HEAD de tu documento...

<SCRIPT language="JavaScript"><!--
function FormRedirect(){
setTimeout('this.document.location.href = "página.html"',5000);}
//--></SCRIPT>

Donde página.html es la URL del documento al que quieres enviar al visitante.

Ahora añade esto a tu sentencia FORM...

onSubmit="FormRedirect()"

Abajo hay un ejemplo.

<FORM NAME="miformulario" METHOD=POST ACTION="mailto:abc@123.org"
      ENCTYPE="text/plain" onSubmit="FormRedirect()">
<INPUT TYPE="text" NAME="micajadetexto" VALUE="">
<INPUT TYPE="submit">
</FORM>

Nota que hay un 5000 en la función, justo después de la URL. Es un retraso de 5000 milisegundos (5 segundos) y es necesario para permitir al navegador que envíe los datos antes de que el redireccionamiento se haga. Si el navegador tarda más de 5 segundos, se redirecciona directamente y los datos se van a tomar viento. Si la acción de enviar el correo falla, sucede lo mismo que antes. (De todos modos es posible que los datos aún estén ahí si el usuario pincha en el botón volver. Pero, a menos que se esfuerce para mandarte los datos, tú no llegarás a verlos).

Desafortunadamente, una configuración de este tipo no es la más sabia del mundo. En la mayoría de los casos, funcionará como está previsto, pero es como un castillo de naipes. Puede parecer resistente, pero no es nada difícil derribarlo. Así que tu formulario puede funcionar perfectamente, pero puede que no le lleve mucho tiempo el irse a freir espárragos.


Una cosilla más y lo dejamos. Cuando coloques un formulario en tus páginas y alguien te envíe información, notarás que la recibes con un Asunto por defecto. Si tu visitante usa Netscape tendrás como asunto "Form posted from Mozilla". Otros navegadores pueden enviar "Respuesta al formulario", etc.

Puedes cambiar esto editanto la sentencia <FORM> como sigue...

<FORM METHOD=POST ACTION="mailto:robin@batman.org?subject=¡Soy un fenómeno!" ENCTYPE="text/plain">

¿De acuerdo?

Advierte de todas formas que hay por ahí unos cuantos clientes de correo (me estoy refiriendo a los programas, no a los usuarios) que no pueden manejar un Asunto de esta manera. En esta situación, los datos parece que se han enviado, cuando en realidad, han desparecido en el olvido. Si ocasionalmente pierdes respuestas que sabes con certeza te han envíado, no especifiques el Asunto.

Si te saltaste la parte del principio donde hablaba del proceso de los formularios por los CGI, quiero que vuelvas ahora y te familiarices con el proceso. Como ya ha quedado claro los formularios de correo pueden presentar una serie de problemas y ser impredecibles para un porcentaje de tus visitantes. Si estás preocupado por este tipo de cosas, utiliza scripts en los formularios. Vamos a ver cómo.