Perl en Español

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


Página 1 de 1  [ 4 mensajes ] 
 
Nota 2009-06-26 15:56 @705

Perlero Nuevo
Registrado: 2009-06-25 15:11 @674
Mensajes: 27
Problemas CGI::Application y mod_perl
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:

Syntax: [ Download ] [ Hide ]
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>


Espero que puedan ayudarme porque ya llevo varios días tratando de solucionar este error y no encuentro la solución. Muchas Gracias. :D


Nota 2009-06-26 17:24 @766
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
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


Nota 2009-06-26 19:01 @834

Perlero Nuevo
Registrado: 2009-06-25 15:11 @674
Mensajes: 27
Te explico bien lo que pasa.
Syntax: (mpa.pl) [ Download ] [ Hide ]
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();


Syntax: (MPA.pm) [ Download ] [ Hide ]
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';

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.

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
use lib "/usr/lib/cgi-bin/"; #en el archivo mpa.pl


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.


Nota 2009-06-28 19:09 @840
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
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


Responder al tema  [ 4 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:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO