Foros del Web » Programando para Internet » PHP »

Formulario para mandar un mail

Estas en el tema de Formulario para mandar un mail en el foro de PHP en Foros del Web. Hola, tengo un formulario que envia un mail. si pongo: <form ACTION="enviar.php" METHOD="POST"> todo va bien, sin emabrgo, si pongo: <form ACTION="index.php?dir=enviado" METHOD="POST"> que es ...
  #1 (permalink)  
Antiguo 12/09/2002, 21:03
 
Fecha de Ingreso: septiembre-2002
Mensajes: 4
Antigüedad: 15 años, 3 meses
Puntos: 0
Formulario para mandar un mail

Hola, tengo un formulario que envia un mail.
si pongo:
<form ACTION="enviar.php" METHOD="POST">

todo va bien, sin emabrgo, si pongo:

<form ACTION="index.php?dir=enviado" METHOD="POST">

que es lo que me interesa, no pasa los datos del formulario, carga la página, pero sin los datos.
Alguien me puede echar una mano? Gracias.
  #2 (permalink)  
Antiguo 12/09/2002, 21:25
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 15 años, 6 meses
Puntos: 7
Re: Formulario para mandar un mail

Y cual es la diferencia entre los dos scripts? *lamento*

Tu error puede ser porque
- dir=envio activa que no se muestren los valores
- te olvidaste del atributo value en los input
- o que se yo "n" cosas mas...
  #3 (permalink)  
Antiguo 13/09/2002, 03:02
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Re: Formulario para mandar un mail

Hola,

<suposicion>
Estas usando algun sistema de portal (PHPNuke, etc) o estas usando la index para redireccionar a otra pagina en funcion del parametro dir.
</suposicion>

No tengo experiencia con sistemas de portales, pero si lo que estas haciendo dentro de index.php es un redireccionamiento con header(), lo que esta pasando es que index.php recibe los campos, pero no se los pasa a la otra pagina.

Aun asi necesitaria ver el codigo de index.php (no todo, puedes borrar los secretos de estado), sobre todo la seccion donde se decide que accion tomar en funcion del parametro dir.

Espero haber sido de ayuda.


Josemi

Aprendiz de mucho, maestro de poco.
  #4 (permalink)  
Antiguo 13/09/2002, 13:19
 
Fecha de Ingreso: septiembre-2002
Mensajes: 4
Antigüedad: 15 años, 3 meses
Puntos: 0
Re: Formulario para mandar un mail

Bueno, a ver si puedo explicarme.
Tengo un archivo mail.php con lo siguiente:

<?php
function tabla()
{
?>
<form ACTION="index.php?dir=enviado" METHOD="POST">
Nombre:
<br><input TYPE="text" NAME="name" SIZE="20" MAXLENGTH="30">
<br><input TYPE="hidden" value="[email protected]" NAME="email1" >
<p>Tu Email:
<br><input TYPE="text" MAXLENGTH="40" WIDTH="20" NAME="email2">
<br>Asunto:
<br><input TYPE="text" NAME="subject" SIZE="20" MAXLENGTH="30">
<br>Mensaje:
<br><textarea ROWS="11" COLS="40" NAME="message"></textarea>
<p><input TYPE="submit" VALUE="enviar"></form>
<br></form>
<? }

y un archivo enviado.php con esto:

<?php
function tabla()
{

PRINT "<CENTER>";
PRINT "Hola, $name.";
PRINT "<BR><BR>";
PRINT "Su mensaje se ha enviado correctamente, gracias.";
PRINT "</CENTER>";

mail("$email1",
"$subject","

Mail: $email2.
Nombre: $name.

$message.
");
}
?>

en el index.php las llamadas las ahgo así:

<A HREF="index.php?dir=mail">Mandar mail</A>

y en la misma página se recibe así:

<?php $dir="./php/".$dir.".php"; ?>
<?php include($dir) ?>
<?php tabla(); ?>

El problema es que, en el mail.php, si pongo:

<form ACTION="index.php?dir=enviado" METHOD="POST">

No manda los datos, pero si pongo:

<form ACTION="./php/enviado.php" METHOD="POST">

Si lo hace.

Siento uqe no me sepa explicar mejor, y ya sé que el código no es una maravilla, pero estoy empezando con php.

Gracias por intentar ayudar, saludos.
  #5 (permalink)  
Antiguo 13/09/2002, 16:02
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Re: Formulario para mandar un mail

Hola,

Tu problema es con el ambito (&quot;scope&quot;) de las varibles del formulario. Mira en el manual <a href='ir.asp?http://www.php.net/manual/en/language.variables.scope.php' target='_blank'>http://www.php.net/manual/en/language.va...</a>.
Resumiendo, el asunto es que las varibles que recibes del formulario tienen ambito &quot;global&quot; y no pueden ser accesibles directamente desde dentro de ninguna funcion. Para acceder a ellas debes indicarle a la funcion que son variables &quot;globales&quot;. Eso lo haces con la sentencia
Código:
global $variable_global_1,...,global $variable_global_n;
. No se si me explico.
En tu caso debes modificar enviado.php y añadirle esa sentencia dentro de la funcion. Quedaria asi:
Código:
&lt;?php
function tabla() 
{
global $name, $email1, $email2, $subject, $message;
// el resto del codigo no cambia
Espero que con esto te funcione

Josemi

Aprendiz de mucho, maestro de poco.
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 23:00.