• Publicidad

Problemas CGI::Application y mod_perl

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

Problemas CGI::Application y mod_perl

Notapor fjmn2001 » 2009-06-26 15:56 @705

Hola, estoy realizando una página utilizando varias herramientas, una de estas es CGI::Application.

Hice un formulario de prueba el cual subí a la página y funciona en mi computador personal, usando TT2, un archivo.pl y un archivo .pm.

Entonces el problema se presenta cuando lo traigo al servidor con el cual estamos trabajando: muestra varios problemas; el primero que solucioné es que no encontraba el archivo .pm pero el que no he logrado solucionar es que cuando se inicia la aplicación no funciona correctamente debido a que escribe la salida en la misma página sin limpiarla provocando algo similar a esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using html4strict Syntax Highlighting
  1. <!DOCTYPE html
  2.         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  3.          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
  5. <head>
  6. <title>Untitled Document</title>
  7. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  8. </head>
  9. <body>
  10. <b>aplicaciones</b><form method="post" action="/cgi-bin/mpa.pl" enctype="multipart/form-data">
  11. <input type="submit" name=".submit" value="Volver" /><input type="submit" name="accion" value="Detalle" /><input type="hidden" name="palabra" value="aplicaciones"  /></form>
  12. </body>
  13. </html><!DOCTYPE html
  14.         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  15.          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  16. <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
  17. <head>
  18. <title>Untitled Document</title>
  19.  
  20. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  21. </head>
  22. <body>
  23. <b>ddd</b><form method="post" action="/cgi-bin/mpa.pl" enctype="multipart/form-data">
  24. <input type="submit" name=".submit" value="Volver" /><input type="submit" name="accion" value="Detalle" /><input type="hidden" name="palabra" value="ddd"  /></form>
  25. </body>
  26. </html><!DOCTYPE html
  27.         PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  28.          "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  29. <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
  30. <head>
  31. <title>Formulario de Busqueda</title>
  32. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  33. </head>
  34. <body>
  35. <form method="post" action="/cgi-bin/mpa.pl" enctype="multipart/form-data">
  36. Buscar en la base de datos<input type="text" name="database"  /><input type="submit" name=".submit" /><input type="hidden" name="accion" value="modo_2"  /></form>
  37.  
  38. </body>
  39. </html>
Coloreado en 0.005 segundos, usando GeSHi 1.0.8.4


Espero que puedan ayudarme porque ya llevo varios días tratando de solucionar este error y no encuentro la solución. Muchas Gracias. :D
fjmn2001
Perlero nuevo
Perlero nuevo
 
Mensajes: 29
Registrado: 2009-06-25 15:11 @674

Publicidad

Notapor explorer » 2009-06-26 17:24 @766

En cuanto al fallo, se me ocurre que puede ser por un fallo de lógica en el programa que hace salir 3 veces la misma salida. ¿Un error en la definición de la plantilla TT?
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 fjmn2001 » 2009-06-26 19:01 @834

Te explico bien lo que pasa.
Sintáxis: (mpa.pl) [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2. #dentro de la carpeta cgi-bin
  3. use strict;
  4. use MPA;
  5.  
  6. my $app = MPA->new();
  7.    $app->run();
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Sintáxis: (MPA.pm) [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. package MPA;
  2. # en la misma carpeta que el archivo anterior
  3. use base qw(CGI::Application);
  4.  
  5. sub setup{
  6. my $self = shift;
  7.  
  8. $self->run_modes(
  9.         'modo_1' => 'm_for',
  10.         'modo_2' => 'm_res',
  11.         'Detalle' => 'm_det',
  12.         );
  13.  
  14.         $self->start_mode('modo_1');
  15.         $self->mode_param('accion');
  16.  
  17. }
  18.  
  19. sub m_for{
  20.         my $self = shift;
  21.         my $q = $self->query();
  22.        
  23.         $output .= $q->start_html(-title=>"Formulario de Busqueda");
  24.         $output .= $q->start_form();
  25.  
  26.         $output .= "Buscar en la base de datos";
  27.         $output .= $q->textfield(-name=>'database');
  28.         $output .= $q->submit();
  29.  
  30.         $output .= $q->hidden(-name=>'accion',-value=>'modo_2');
  31.         $output .= $q->end_form();
  32.         $output .= $q->end_html();
  33.  
  34.         return $output;
  35.         }
  36.  
  37. sub m_res {
  38.  
  39.           my $self = shift;
  40.  
  41.           # Obtener el objeto CGI.pm
  42.           my $q = $self->query();
  43.  
  44.           my $salida = $q->param('database');
  45.  
  46.  
  47.           $output .= $q->start_html();
  48.           $output .= $q->b($salida);
  49.           $output .= $q->start_form(-action=>'/cgi-bin/mpa.pl', -method=>'POST');
  50.           $output .= $q->submit(-value=>'Volver');
  51.           $output .= $q->submit(-value=>'Detalle', name=>'accion');
  52.           $output .= $q->hidden(-value=>$salida, name=>'palabra');
  53.           $output .= $q->end_form();
  54.           $output .= $q->end_html();
  55.          
  56.  
  57.  
  58.           return $output;
  59.  
  60.     }
  61.  
  62.  
  63.  sub m_det {
  64.  
  65.           my $self = shift;
  66.  
  67.           my $q = $self->query();
  68.  
  69.           my $salida = $q->param('palabra');
  70.  
  71.           $output .= $q->start_html();
  72.           $output .= $q->start_form(-action=>'../cgi-bin/mpa.pl',-method=>'POST');
  73.           $output .= $salida;
  74.           $output .= $q->p ('Estos son los detalles');
  75.           $output .= $q->p ('Detalles');
  76.           $output .= $q->submit(-value=>'Volver');
  77.           $output .= $q->end_form();
  78.           $output .= $q->end_html();
  79.          
  80.           return $output;
  81.  
  82.     }
  83.  
  84.  
  85.  
  86. '1';
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4

Esto así de esta manera corre en mi computador personal (Ubuntu) perfectamente, pero cuando lo paso al servidor donde estamos trabajando (Debian) le tengo que hacer algunos cambios porque /var/log/apache2/error.log-- me indica que no se puede encontrar el archivo MPA.pm, esto lo hago agregando la siguiente línea.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use lib "/usr/lib/cgi-bin/"; #en el archivo mpa.pl
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Entonces cuando entro al navegador "192.168.20.254/cgi-bin/mpa.pl, aparece todo bien pero al empezar a utilizar el formulario empieza a agregar los template en el navegador sin limpiar la página lo que provoca que genere varios html dentro de una página.
fjmn2001
Perlero nuevo
Perlero nuevo
 
Mensajes: 29
Registrado: 2009-06-25 15:11 @674

Notapor explorer » 2009-06-28 19:09 @840

Ya veo el error: el CGI es ejecutado por mod_perl (lo cual está bien) y la varible $output no es inicializada, por lo que mantiene su valor en cada invocación.
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


Volver a Web

¿Quién está conectado?

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