• Publicidad

CGI y formularios HTML

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

CGI y formularios HTML

Notapor Guille » 2006-06-08 12:02 @543

Hola como andan??

Tenia un par de dudas con respecto al funcionamiento de los Formulario HTML y los CGI, hay alguna manera de pasar las variables sin tener que la descomposicion de las mismas??

Por que lo que quiero es que complete el formulario HTML y luego segun las variables que se pasen condicionar las variables del script de perl....

Se entiende...

Y si alguien podria decirme masomenos para que funciona el modulo CGI...

Buenos muchas gracias!!

Saludos
Guille
Avatar de Usuario
Guille
Perlero nuevo
Perlero nuevo
 
Mensajes: 33
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina

Publicidad

Re: CGI y forms!!

Notapor explorer » 2006-06-08 12:19 @555

Guille escribiste:hay alguna manera de pasar las variables sin tener que la descomposicion de las mismas??
Pues no, no entiendo nada...

Guille escribiste:Por que lo que quiero es que complete el formulario HTML y luego segun las variables que se pasen condicionar las variables del script de perl....
Se entiende...
El completar el formulario se hace con el módulo CGI de forma muy sencilla, dando valores a los parámetros del form que el módulo va a mostrar al cliente. Y en cuanto lo de las variables... no estoy seguro de lo que hablas...

Guille escribiste:Y si alguien podría decirme mas o menos para que funciona el modulo CGI...
En esta web hay unos cuantos tutoriales...
http://perlenespanol.com/archives-tut/cat_cgi.html
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 Guille » 2006-06-08 12:50 @576

Pues claro he leído que para pasar las variables del form HTML al script CGI debe realizar lo siguiente según sea POST o GET el action, (o algo así)

Código: Seleccionar todo
@array = split (/&/ $var);
foreach @array1(@array) {
    ($var1,$var2)=split(/=/$array1);
    $var2=~tr/+//;
    $var2=~s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
    $FORM{$var1}=$var2;
}


Pido perdón por mi inexperiencia....

Saludos para todos y gracias
Avatar de Usuario
Guille
Perlero nuevo
Perlero nuevo
 
Mensajes: 33
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina

Notapor explorer » 2006-06-08 13:18 @596

No hay que pedir perdón por ser inexperto.
Si acaso, pedir disculpas por no saber hacer la pregunta correcta.
La peor pregunta es aquella que no se hace.

Tienes ejemplos de cómo leer las variables pasadas al script en esto foro. Utiliza el sistema de búsqueda.

Por ejemplo, para lo que quieres, puedes usar el que se comenta aqui .

De forma general, siempre es mejor usar el módulo CGI.
En este otro tienes un ejemplo con la función Vars, pero quizás el ejemplo más sencillo pueda ser este, con la función param:
Código: Seleccionar todo
#!/usr/bin/perl
use CGI qw/:standard/;

print header,
      start_html('Volcado de parámetros'),
      h1('Lista de los parámetros pasados'),
      hr;

# Aquí sacamos la lista de los parámetros
my @parametros = param();

# Les sacamos por la página, como párrafos
foreach my $par ( @parametros ) {
        print p($par);
        print blockquote(param( $par ));
}
print end_html;
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 Guille » 2006-06-09 08:39 @402

Hola explorer muchas gracias por tu respuestas!!

He descargado y instalado el modulo CGI de cpan, me ha funcionado Muy bien el formulario utilizando el codigo del ejemplo que has escrito utilizando la funcion param();

De todas maneras he copiado tal cual el codigo de los ejemplos del modulo de cpan de otra manera de utilizar el modulo pero al ejecutarlo me da error 500, la pregunta consiste basicamente si hay un error de codigo o tal vez un error de la configuracion de Apache

Código: Seleccionar todo
#!/usr/local/bin/perl -w
   use CGI;                             # load CGI routines
   $q = new CGI;                        # create new CGI object
   print $q->header,                    # create the HTTP header
         $q->start_html('hello world'), # start the HTML
         $q->h1('hello world'),         # level 1 header
         $q->end_html;                  # end the HTML


Otra vez aprovecho para agracerte toda la ayuda brindada :D

Guille :D
Avatar de Usuario
Guille
Perlero nuevo
Perlero nuevo
 
Mensajes: 33
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina

Notapor explorer » 2006-06-09 10:05 @462

El error 500 suele indicar que el script no tiene permisos de ejecución. Compruebalos.
En caso de dudas, haces un chmod 755 script.pl.
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 Guille » 2006-06-12 11:21 @515

Hola Explorer, te comento que ya me está funcionando correctamente el form; estoy utilizando la manera de mostrar las variables mediante la función param( ). Mi duda actualmente es cómo acceder a los distintos campos que se encuentran dentro del array
Código: Seleccionar todo
my @parametros = param();


Bueno seguiré probando y gracias por la ayuda.

Guille :D
Avatar de Usuario
Guille
Perlero nuevo
Perlero nuevo
 
Mensajes: 33
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina

Notapor explorer » 2006-06-12 12:36 @566

Según el manual del CGI, de una de estas formas:
Código: Seleccionar todo
$valor = param('parametro');
@valores = param('parametro');
según el parámetro sea multievaluado o no.

Los nombres de los parámetros los has sacado con la instrucción anterior. Ahora puedes recorrer todos los nombres de esos parámetros y sacar sus valores.

Si te fijas en el código mío que está más arriba, verás que hay un bucle foreach. Dentro de el, $par es el nombre del parámetro. Más adelante, hago param($par) para sacar el valor que me ha dado el usuario.
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 Guille » 2006-07-11 14:33 @648

Hola explorer, he seguido probando y con el foreach que he visto en tu ejemplo, he podido visualizar todos los parametros pasados por el formulario, lo que no he podido hacer es, no utilizar el foreach para ver todos los parametros y directamente entrar al array para utilizar unos datos si y otros no...

Ahi esta mi problema.

Bueno espero que me puedas ayudar un saludo!!!.
Avatar de Usuario
Guille
Perlero nuevo
Perlero nuevo
 
Mensajes: 33
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina

Notapor explorer » 2006-07-11 14:49 @659

Repasa el mensaje anterior: si quieres usar un parámetro de nombre 'nolose', entonces lo lees con la función param():
Código: Seleccionar todo
print param('nolose');
Si publicas tu código te podremos ayudar más...
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

Siguiente

Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados