Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Web » CGI y formularios HTML Responder al tema
Nuevo tema


Página 1 de 1  [ 13 mensajes ] 
 
Nota 2006-06-08 12:02 @543
Avatar de Usuario
Perlero Nuevo
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina
Mensajes: 34
CGI y formularios HTML
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


Nota 2006-06-08 12:19 @555
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10216
Re: CGI y forms!!
Guille escribió:
hay alguna manera de pasar las variables sin tener que la descomposicion de las mismas??
Pues no, no entiendo nada...

Guille escribió:
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 escribió:
Y si alguien podria decirme masomenos para que funciona el modulo CGI...
En esta web hay unos cuantos tutoriales...
http://perlenespanol.baboonsoftware.com ... t_cgi.html


Nota 2006-06-08 12:50 @576
Avatar de Usuario
Perlero Nuevo
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina
Mensajes: 34
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:
@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


Nota 2006-06-08 13:18 @596
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10216
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:
#!/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;


Nota 2006-06-09 08:39 @402
Avatar de Usuario
Perlero Nuevo
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina
Mensajes: 34
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:
#!/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


Nota 2006-06-09 10:05 @462
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10216
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.


Nota 2006-06-12 11:21 @515
Avatar de Usuario
Perlero Nuevo
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina
Mensajes: 34
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:
my @parametros = param();


Bueno seguiré probando y gracias por la ayuda.

Guille :D


Nota 2006-06-12 12:36 @566
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10216
Según el manual del CGI, de una de estas formas:
Código:
$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.


Nota 2006-07-11 14:33 @648
Avatar de Usuario
Perlero Nuevo
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina
Mensajes: 34
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!!!.


Nota 2006-07-11 14:49 @659
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10216
Repasa el mensaje anterior: si quieres usar un parámetro de nombre 'nolose', entonces lo lees con la función param():
Código:
print param('nolose');
Si publicas tu código te podremos ayudar más...


Nota 2006-07-11 15:25 @684
Avatar de Usuario
Perlero Nuevo
Registrado: 2006-05-31 13:30 @604
Ubicación: Argentina
Mensajes: 34
Hola!!

Aca te dejo el formulario que totalmente base pero me ayudaria mucho para entender el funcionamiento:

Código:

<title>Formulario</title>
<p>&nbsp;</p><form name="form1" method="post" action="http://direccion del cgi/">
<table width="75%" border="0">
<tr>
<td>Nombre</td>
<td><input name="nombre" type="text"></td>
</tr>
<tr>
<td>Edad</td>
<td><input name="edad" type="text"></td>
</tr>
<tr>
<td>Numero</td>
<td><input name="numero" type="text"></td>
</tr>
<tr>
<td><input type="submit" value="Enviar"></td>
</tr>
</form>



Si yo utilizo el ejemplo anterior que me has enviado se me imprimen todas las variables, yo por ejemplo solo me gustaria que del otro lado se me imprima el numero que brinda la edad o solo edad 18 por ej... :?

Gracias otra vez!!!!

Saludos!!!


Nota 2006-07-11 16:24 @725
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Hola:

Puedes lograr lo que quieres fácilmente usando el módulo CGI.pm, aquí te dejo un ejemplo rápido con el cual puedes imprimir el valor del campo 'edad':

Código:
#!/usr/bin/perl -w

use strict;
use CGI;

my $query = new CGI;
my %Input = $query->Vars;


print "Edad: $Input{'edad'}\n";



Saludos

_________________
Uriel Lizama Perl programmer fundador de Perl en Español


Nota 2006-07-11 17:13 @759
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10216
Pues tu mismo lo has dicho:
Código:
# me imprima el número que brinda la edad
print 'edad ', param('edad');


Responder al tema  [ 13 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO