Página 1 de 1

Problema con Formulario

NotaPublicado: 2006-12-05 19:15 @843
por hadesdark
Hola a todos, soy nuevo en el foro y en esto de programar en Perl. Llevo apenas como 1 mes haciendo casi todo por consola y ahora que lo empecé a combinar con html se me presentó un problema. Tengo el siguiente formulario:

Sintáxis: [ Descargar ] [ Ocultar ]
  1. <html> 
  2. <head><link rel="stylesheet" type="text/css" href="estilo.css"></head> 
  3. <body> 
  4. <center> 
  5. <table border=1> 
  6. <form action="lectura.pl" method="get"> 
  7. <tr> 
  8. <th colspan="2"><h2>Agregar Contacto</h2></th> 
  9. </tr> 
  10. <tr> 
  11. <td>ID:</td> 
  12. <td><input type="text" name="id" /></td> 
  13. </tr> 
  14. <tr> 
  15. <td>Nombre:</td> 
  16. <td><input type="text" name="name" /></td> 
  17. </tr> 
  18. <tr> 
  19. <td>Apellido:</td> 
  20. <td><input type="text" name="apellidos" /></td> 
  21. </tr>  
  22. <tr> 
  23. <td>Eda:</td> 
  24. <td><input type="text" name="edad" /></td> 
  25. </tr>  
  26. <tr> 
  27. <td>Cumpleaños:</td> 
  28. <td><input type="text" name="fecha" /></td> 
  29. </tr>  
  30. <tr align="right"> 
  31. <td colspan="2"> 
  32. <input type="submit" value="Enviar"> 
  33. </td> 
  34. </tr> 
  35. </form> 
  36. </table> 
  37. </center> 
  38. </body> 
  39. </html> 

El problema es que no sé cómo hacer para que al darle 'Enviar' me lance a la pantalla lectura.pl, o mejor dicho, que cuando vaya a lectura.pl me muestre el contenido de las variables, es decir, lo que se capturó en el formulario.

Ojalá me puedan ayudar, gracias de antemano.

NotaPublicado: 2006-12-05 19:47 @866
por explorer
Bienvenido a los foros de Perl en Español.

Cuando se pulsa 'Enviar', tu cliente web manda una petición al servidor web que aloja la página html. La petición, al ser del método "get" será una URL del tipo:
Código: Seleccionar todo
http://servidor-que-aloja-la-página/directorio-actual/lectura.pl?id=2&name=Joaquin&apellidos=Ferrero&edad=29&fecha=hoy&Enviar=Submit

El servidor web intentará encontrar una página llamada lectura.pl en el directorio-actual.

Supongamos que directorio-actual está marcado en el servidor web como un almacén de programas ejecutables y que el usuario que ejecuta el servidor web tiene permisos de ejecución de esos programas. Si lectura.pl existe en ese directorio y tiene permisos de ejecución, lo arrancará, pasándole la URL como parámetro en la entrada estándar. lectura.pl deberá interpretar esa entrada y preparar una salida, que entregará en la salida estándar, que será recogida por el servidor web y finalmente, éste la entregará al usuario.

En esto foro, en el apartado de tutoriales, mírate los que hablen de CGI. Usa también el sistema de búsqueda para buscar referencias a CGI. Más info en la Wikipedia.

Necesitaríamos más información de las condiciones en que estás haciendo esto: ¿qué servidor web? ¿remoto o local? ¿lectura.pl está colocado en su sitio correcto dentro del sitio web? ¿qué dicen los logs del servidor web? ¿qué sale en el navegador?

RE

NotaPublicado: 2006-12-05 19:58 @873
por hadesdark
Gracias por responder, voy a ver de inmediato los tutoriales a ver que encuentro :D , y con respecto a las demás preguntas: uso Appserv, trabajo en local, lectural.pl está en el mismo directorio de este formulario, es decir, dentro de (c:/appserv/www/), y pues el problema viene siendo que no sé cómo mostrar los datos que se han puesto en el formulario, así que veré los tutos, alguna ayuda más será agradecida totalmente. ¡Saludos!

¡Ah!, y cuando le doy en enviar en la barra de dirección me pone esto:
Código: Seleccionar todo
http://localhost/perl/lectura.pl?id=2&name=Andres&apellidos=Lopez&edad=20&fecha=18+Noviembre

NotaPublicado: 2006-12-05 20:08 @880
por explorer
Pues la respuesta primera que se me ocurre es que debes comprobar que Appserv considera el directorio c:/appserv/www como posible almacén de programas ejecutables. Repasa su configuración. ¿No tiene alguna carpeta llamada bin, cgi o cgi-bin?

RE2

NotaPublicado: 2006-12-05 20:10 @882
por hadesdark
Asi es, efectivamente en la carpeta www existe una carpeta con nombre cgi-bin, y dentro tiene un archivo llamado printenv.pl, osea que tengo que configurar algo en el appserv para que me reconozca los .pl? Gracias por la paciencia.

NotaPublicado: 2006-12-05 20:40 @902
por explorer
No. Debes colocar allí, dentro de cgi-bin, todos los .pl, incluyendo lectura.pl. Y en el html, en el <form>, cambias el 'action="lectura.pl"' por 'action="/cgi-bin/lectura.pl"'.

Al menos así es como hay que hacerlo en otros servidores web. Fíjate: si movemos el .pl dentro de cgi-bin, debemos indicar en action el 'camino' completo para que lo pueda localizar el servidor web. Si no lo encuentra, saldrá un error 404 en pantalla y en los logs.

Prueba a poner un http://localhost/cgi-bin/printenv.pl para comprobar si funciona.

Si no sale, quizás sea porque en vez de 'cgi-bin' sea otra cosa. En ese caso habrá que ver la doc de Appserv (que, a propósito, creo que es la segunda vez en mi vida que oigo hablar de este servidor web).

NotaPublicado: 2007-01-06 13:41 @611
por Frank
a ver a mi me pasa una cosa similar, uso appserv corriendo en local en una maquina con Win XP, intente ejecutar un script y me arroja un error el cual se refiere (en mi arcaico ingles) a una mala configuracion del http.conf, en la ayuda de active state tiene una serie de trucos para solventar el problema, primero lo intento y luego te digo que paso.
soy begginer en perl.