Procesar Formulario

05/06/2007 - 20:09 por Àlex | Informe spam
Hola!
Estoy encargado de hacer un sitio web, y hemos realizado un Formulario HTML,
y no sabemos como hacer que nos llegue cuando le dan a enviar. No queremos
usar <ACTION="mailto: direcion@servidor.com">, porque queremos que nos
llegue de una forma "invisible" al usuario, y de esta manera avisa que se va
a enviar un correo electrónico, se enviarán sus datos, etc
Hemos pensado en PHP, ASPpero no sabemos cómo hacerlo.
Y hemos copiado un CGI de una web, cambiando las variables y el directorio
de nuestro Perlpero al darle a enviar nos sale: "Internal Server Error".
SDi alguien sabe donde está el fallo, u otra forma más sencilla para
conseguir que funcione el formulario y nos llegue la información
introducida, o se guarde en un fichero en nuestro servidor...lo que sea, que
nos ayude. MUCHAS GRACIAS.

Àlex

Código del formulario:
<form method="POST" action="http://www.sempreendavant.com/cgi-b....cgi"
onsubmit="return FrontPage_Form1_Validator(this)" language="JavaScript"
name="FrontPage_Form1">

<input type="text" size="26" maxlength="256" name="asunto"></font></p>
<p><font face="Arial"><strong>Escriba sus comentarios en el espacio
siguiente:</strong></font></p>
<dl>
<dd><font face="Arial">
<textarea name="comentar" rows="5" cols="42"></textarea></font></dd>
</dl>
<p><font face="Arial"><strong>Dinos cómo ponernos en contacto
contigo:</strong></font></p>
<dl>
<dd>
<table>
<tr>
<td><font face="Arial">&nbsp;&nbsp;
<input type="text" size="35" maxlength="50"
name="nombre"></font></td>
</tr>
<tr>
<td><font face="Arial">Grupo</font></td>
<td><font face="Arial">&nbsp;&nbsp;
<input type="text" name="grupo" size="35" maxlength="50"></font></td>
</tr>
<tr>
<td><font face="Arial">Correo electrónico</font></td>
<td><font face="Arial">&nbsp;&nbsp;
<input type="text" size="35" maxlength="25" value="@"
name="email"></font></td>
</tr>
</table></dd>
</dl>
</blockquote>
<p align="center"><font face="Arial"><input type="submit" value="Enviar
comentarios">

<input type="reset" value="Borrar formulario"></font></p>

</form>


_-
Codigo del CGI "form.cgi"

#!/usr/bin/perl

# Definición del programa para enviar correo, debe dejarse sin cambios.
$progmail = '/usr/sbin/sendmail';

# Usuario al que se enviarán los mensajes. Deberá poner su alias de correo
electrónico.
$destino = 'scout_vlc@hotmail.com';

# Indica que se trata de un documento HTML
print "Content-type: text/html";

# Obtiene la entrada
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

# Divide las variables entre nombre y valor.
@pairs = split(/&/, $buffer);

# Optiene todas las variables y sus valores
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);

$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$FORM{$name} = $value;
}

# Ahora enviamos el mail al $destino
open (SALIDA, "|$progmail $destino") || die "No puedo abrir $progmail!";
print SALIDA "Reply-to: $FORM{'email'} ($FORM{'nombre'} $FORM{'grupo'})";
print SALIDA "Subject: Comentarios al formulario de www.sempreendavant.com
($FORM{'nombre'} $FORM{'grupo'})";
print SALIDA "$FORM{'nombre'} $FORM{'grupo'} del $FORM{'asunto'}envio ";
print SALIDA "El siguiente comentario::";
print SALIDA
"";
print SALIDA "$FORM{'comentar'}";
print SALIDA
"";
close (SALIDA);

# Ahora enviamos la salida al fichero:
/usr/local/etc/httpd/htdocs/dept/dept_img/datos/respuestas.htm
open (SALIDA, ">> /usr/etc/httpd/htdocs/dept/dept_img/datos/respuestas.htm")
|| die "No puedo abrir el fichero!";
print SALIDA "<hr>"
print SALIDA "<b>$FORM{'nombre'} $FORM{'apellidos'}</b> del
<i>$FORM{'estamento'}</i> envio <br>";
print SALIDA "El siguiente comentario:<p>";
print SALIDA "<pre>"
print SALIDA
"";
print SALIDA "$FORM{'comentar'}";
print SALIDA
"";
print SALIDA "</pre>"
close (SALIDA);

Preguntas similare

Leer las respuestas

#1 Arturo Costa Delgado
05/06/2007 - 22:50 | Informe spam
Buenas tardes:
Para eso debes utilizar un componente de envío o si se trata de un
servidor propio, configurar el SMTP para poder utilizar CDO.

Ahora bien, si la página esta en un servidor de pago, normalmente estos
tienen una serie de componentes registrados para poder enviar emails
desde una página asp. Un ejemplo es SoftArtisans o AspEmail. Es cuestión
que le consultes al webmaster del hosting para que te informe que
componente puedes utilizar.

Un saludo desde Lima, Perú

ACD
Respuesta Responder a este mensaje
#2 Matias Iacono
06/06/2007 - 14:18 | Informe spam
El problema puede estar en diferentes partes.

Por ejemplo, podria ser que no tengas configurado correctamente el servidor
para que soporte la ejecucion de CGIs.

Por otro lado, usar ASP y PHP son dos mundos separados. Digo, que tipo de
servidor tienes? Que caracteristicas, sistema operativo?

Todo esto hara que debas elegir entre un lenguaje u otro.

De cualquier manera, el codigo puedes conseguirlo facilmente en internet.

Por ejemplo: www.aspfacil.com, www.asp101.com

Pero veo que podria haber otro problema y es en los conceptos de
programacion que puedas poseer.

Saludos.

Microsoft MVP
Orador Regional INETA


"Àlex" wrote:

Hola!
Estoy encargado de hacer un sitio web, y hemos realizado un Formulario HTML,
y no sabemos como hacer que nos llegue cuando le dan a enviar. No queremos
usar <ACTION="mailto: ">, porque queremos que nos
llegue de una forma "invisible" al usuario, y de esta manera avisa que se va
a enviar un correo electrónico, se enviarán sus datos, etc
Hemos pensado en PHP, ASPpero no sabemos cómo hacerlo.
Y hemos copiado un CGI de una web, cambiando las variables y el directorio
de nuestro Perlpero al darle a enviar nos sale: "Internal Server Error".
SDi alguien sabe donde está el fallo, u otra forma más sencilla para
conseguir que funcione el formulario y nos llegue la información
introducida, o se guarde en un fichero en nuestro servidor...lo que sea, que
nos ayude. MUCHAS GRACIAS.

Àlex

Código del formulario:
<form method="POST" action="http://www.sempreendavant.com/cgi-b....cgi"
onsubmit="return FrontPage_Form1_Validator(this)" language="JavaScript"
name="FrontPage_Form1">

<input type="text" size="26" maxlength="256" name="asunto"></font></p>
<p><font face="Arial"><strong>Escriba sus comentarios en el espacio
siguiente:</strong></font></p>
<dl>
<dd><font face="Arial">
<textarea name="comentar" rows="5" cols="42"></textarea></font></dd>
</dl>
<p><font face="Arial"><strong>Dinos cómo ponernos en contacto
contigo:</strong></font></p>
<dl>
<dd>
<table>
<tr>
<td><font face="Arial">
<input type="text" size="35" maxlength="50"
name="nombre"></font></td>
</tr>
<tr>
<td><font face="Arial">Grupo</font></td>
<td><font face="Arial">
<input type="text" name="grupo" size="35" maxlength="50"></font></td>
</tr>
<tr>
<td><font face="Arial">Correo electrónico</font></td>
<td><font face="Arial">
<input type="text" size="35" maxlength="25" value="@"
name="email"></font></td>
</tr>
</table></dd>
</dl>
</blockquote>
<p align="center"><font face="Arial"><input type="submit" value="Enviar
comentarios">

<input type="reset" value="Borrar formulario"></font></p>

</form>


_-
Codigo del CGI "form.cgi"

#!/usr/bin/perl

# Definición del programa para enviar correo, debe dejarse sin cambios.
$progmail = '/usr/sbin/sendmail';

# Usuario al que se enviarán los mensajes. Deberá poner su alias de correo
electrónico.
$destino = '';

# Indica que se trata de un documento HTML
print "Content-type: text/html";

# Obtiene la entrada
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

# Divide las variables entre nombre y valor.
@pairs = split(/&/, $buffer);

# Optiene todas las variables y sus valores
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);

$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

$FORM{$name} = $value;
}

# Ahora enviamos el mail al $destino
open (SALIDA, "|$progmail $destino") || die "No puedo abrir $progmail!";
print SALIDA "Reply-to: $FORM{'email'} ($FORM{'nombre'} $FORM{'grupo'})";
print SALIDA "Subject: Comentarios al formulario de www.sempreendavant.com
($FORM{'nombre'} $FORM{'grupo'})";
print SALIDA "$FORM{'nombre'} $FORM{'grupo'} del $FORM{'asunto'}envio ";
print SALIDA "El siguiente comentario::";
print SALIDA
"";
print SALIDA "$FORM{'comentar'}";
print SALIDA
"";
close (SALIDA);

# Ahora enviamos la salida al fichero:
/usr/local/etc/httpd/htdocs/dept/dept_img/datos/respuestas.htm
open (SALIDA, ">> /usr/etc/httpd/htdocs/dept/dept_img/datos/respuestas.htm")
|| die "No puedo abrir el fichero!";
print SALIDA "<hr>"
print SALIDA "<b>$FORM{'nombre'} $FORM{'apellidos'}</b> del
<i>$FORM{'estamento'}</i> envio <br>";
print SALIDA "El siguiente comentario:<p>";
print SALIDA "<pre>"
print SALIDA
"";
print SALIDA "$FORM{'comentar'}";
print SALIDA
"";
print SALIDA "</pre>"
close (SALIDA);





email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida