• Publicidad

Tengo problemas con CGI

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Notapor explorer » 2006-07-20 15:51 @702

No es tan sencillo...

Por una parte estás creando una página web con instrucciones print y luego quieres que aparezca los contenidos de otra página. Si esa segunda página tiene todos los elementos (head, body) entonces dependerá del navegador el que se vea algo o no se vea nada.

Yo haría lo siguiente: de una página de mi empresa, la convierto en una plantilla, poníendole las marcas de HTML::Template. Luego, en el CGI, cargo la plantilla, relleno los campos y eso es lo que mando al usuario.

Otra opción es redirigir la salida del CGI para que se conecte a otra página ya hecha. Esta es la más sencilla, desde luego.

Y una tercera opción. Ya que tu respuesta no implica ningún campo personalizado significa que siempre devuelves la misma página. Bueno, pues tan sencillo como que el cgi habra esa página como si fuera un fichero de texto más y la mande a la salida estándar con los print.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Publicidad

Notapor JAPM » 2006-07-20 16:14 @718

Gracias por tu respuesta pero hubo una confusion en mi pregunta lo que quise decir es que como muestro una pagina que no sea la sencilla osea elimino este codigo:

Código: Seleccionar todo
# Imprime el título y la cabecera
print "<Head><Title>Gracias</Title></Head>";
print "<Body><H1>Muchas Gracias, sus comentarios seran bienvenidos</H1>";
# Imprime el texto del texto a mostar.
print "Gracias por enviar sus comentarios a <I>Mi empresa</I>!<P>";

En vez de este sodigo pongo una instruccion para que me muestre la pagina que necesito, y efectivamente la opcion para redirigir la acabo de encontrar y eso trate de hacer ahorita pero no me muestra nada, quiero comentarte que el sitio esta hecho con un frame del lado derecho asi que el webform esta del lado izquierdo y cuando envio los datos no me muestra nada, le quite las lineas de codigo que te mencione osea esta:

Código: Seleccionar todo
# Imprime el título y la cabecera
print "<Head><Title>Gracias</Title></Head>";
print "<Body><H1>Muchas Gracias, sus comentarios seran bienvenidos</H1>";
# Imprime el texto del texto a mostar.
print "Gracias por enviar sus comentarios a <I>Mi empresa</I>!<P>";


En lugar de esto puse lo siguiente:

print redirect( 'http://mipagina.com/Confirmacion_de_email.html' );

pero la pagina que me muestra esta en blanco, tendre algun error de codigo?? Bueno para que se entienda mas ahi te va el codigo completo del CGI:

Código: Seleccionar todo
#!/usr/bin/perl -- -*-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 = '[email protected]';

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

# 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;
}

print redirect( 'http://foreverlivinginternacional.com.mx/Confirmacion_de_email.html' );

# Ahora enviamos el mail al $destino
open (SALIDA, "|$progmail $destino") || die "No puedo abrir $progmail!\n";
print SALIDA "Reply-to: $FORM{'email'} ($FORM{'nombre'} $FORM{'apellidos'})\n";
print SALIDA "Subject: Posible cliente ($FORM{'nombre'} $FORM{'apellidos'})\n\n";
print SALIDA "Nombre: $FORM{'nombre'} $FORM{'apellidos'}\n";
print SALIDA "Telefono: $FORM{'phone'}\n";
print SALIDA "E-Mail: $FORM{'e_mail'}\n\n";
print SALIDA "Comentario de:$FORM{'nombre'}\n";
print SALIDA "------------------------------------------------------------\n";
print SALIDA "$FORM{'comentario'}";
print SALIDA "\n------------------------------------------------------------\n";
close (SALIDA);


Tendre algo mal??
JAPM
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2006-07-13 13:14 @593

Notapor explorer » 2006-07-20 16:30 @729

Sí: que Perl no sabe qué es redirect.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor JAPM » 2006-07-20 16:45 @740

Ah, ok bueno me falta mucho por aprender, lo curioso fue que vi una respuesta donde para redireccionar una pagina era ese codigo y fue en este mismo foro viewtopic.php?t=523&highlight=redirect

Bueno entonces investigare para poder hacer esto, muchas gracias por tus respuestas.
JAPM
Perlero nuevo
Perlero nuevo
 
Mensajes: 7
Registrado: 2006-07-13 13:14 @593

Notapor explorer » 2006-07-21 05:51 @285

Es que en ese caso sí que se puede hacer un redirect, porque entonces es una función importada desde el módulo CGI.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Anterior

Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado