• Publicidad

Contador CGI

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Contador CGI

Notapor primitivo » 2013-06-16 13:31 @605

¡Hola amigos! Estoy de vuelta, perdón por la demora.

Resulta que ando trabajando en un contador sencillo para un website que llevo, pero el "querido" contador, me tira siempre en Error 500.

Por acá el código.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl #Gracias por el arreglo explorer ^^
  2. #Contador de visitas
  3.  
  4. &escribe_visita;
  5. sub escribe_visita
  6. {
  7.     my $user_agente = $ENV{HTTP_USER_AGENT};
  8.     my $remote_address = $ENV{REMOTE_ADDR};
  9.     my $file = open(VS,"visitas/visitas.txt");
  10.     if (!$file);
  11.     {
  12.            print "Content-type:text/html\n\n";
  13.            print "<html>";
  14.            print "<head>";
  15.            print "<body>";
  16.            print "<p>No es posible obtener la lectura!</p>";
  17.            print "</body>";
  18.            print "</head>";
  19.            print "</html>";
  20.     } else {
  21.         my $visita;
  22.         print $file "Navegador: $user_agente = IP: $remote_address\n";
  23.         @contador = <$file>;
  24.         foreach $contar (@contador)
  25.         {
  26.    
  27.              $visita++;
  28.    
  29.         }
  30.         close(VS);
  31.         print "Content-type:text/html\n\n";
  32.         print "<html>";
  33.         print "<head>";
  34.         print "<link rel=\"stylesheet\" type=\"text/css\" href=\"count.css\"/>";
  35.         print "<title>Nuestras visitas</title>";
  36.         print "</head>";
  37.         print "<body>";
  38.         print "<table class=\"count\">";
  39.         print "<tbody>";
  40.         print "<tr>";
  41.         print "<td>";
  42.         print "<span style=\"color:#000;\">Visitas: $visita </span>";
  43.         print "</td>";
  44.         print "</tr>";
  45.         print "</tbody>";
  46.         print "</table>";
  47.         print "</body>";
  48.         print "</html>";
  49.     }
  50. }
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


¿Cuál sería el error?
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004

Publicidad

Re: Contador CGI

Notapor danimera » 2013-06-16 19:12 @842

Verifica primero si estás programando en un alojamiento en el que el fichero tenga permisos 755. Esa es la primera causa de ese error.
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Contador CGI

Notapor primitivo » 2013-06-16 20:19 @888

Yo mismo le dí los permisos, :D
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004

Re: Contador CGI

Notapor danimera » 2013-06-16 21:52 @953

Yo recomendaría tratar de programar de una forma más actualizada...


Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3.  
  4. use CGI qw(:all);
  5. use CGI::Carp qw(fatalsToBrowser);
  6.  
  7. print header; # para evitar el print "Content-type:text/html\n\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Por lo menos algo así, debería iniciar tu código ^^
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia

Re: Contador CGI

Notapor primitivo » 2013-06-17 10:12 @467

Debería... xD

Pero de igual forma, creo que haré el script nuevamente, ¡Gracias, tocayo! ^^
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004

Re: Contador CGI

Notapor explorer » 2013-06-17 10:27 @477

El error 500 puede salir por muchas razones.

Lo que sí veo mal es que $file adopte el valor de retorno de open(). open() no devuelve el gestor de archivo, sino un valor de verdad: verdadero si ha conseguido abrir el archivo, falso si no.

Por eso la línea 22 fallará: estás intentando usarlo como gestor. El gestor es VS .

Debes mirar el archivo error.log para saber por qué ha fallado. Ahí vendrá un mensaje más claro. O como danimera, usar 'use CGI::Carp qw(fatalsToBrowser);' .

Esta es otra versión, más moderna.
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. # Registro de visitas
  3. # Joaquín Ferrero. 20130617.
  4.  
  5. use autodie;
  6. use CGI       qw(:standard);
  7. use CGI::Carp qw(fatalsToBrowser);
  8.  
  9. ## Configuración ##
  10. my $archivo_contador = "/tmp/visitas.txt";
  11. ## Fin configuración ##
  12.  
  13.  
  14. my $visitas        = 0;
  15. my $user_agente    = $ENV{'HTTP_USER_AGENT'};
  16. my $remote_address = $ENV{'REMOTE_ADDR'    };
  17.  
  18.  
  19. open my $ARCHIVO, '+<', $archivo_contador;              # abrimos en modo lectura/escritura
  20. while (<$ARCHIVO>) {
  21.     $visitas++;
  22. }
  23. print   $ARCHIVO "Navegador: $user_agente = IP: $remote_address\n";
  24. close   $ARCHIVO;
  25.  
  26.  
  27. print
  28.     header,
  29.     start_html(
  30.         -title => 'Nuestras visitas',
  31.         -head  => Link({-rel => 'stylesheet', -href => 'count.css'}),
  32.     ),
  33.     table({-class => 'count'}, Tr(td(span({-style=>'color:#000;'}, "Visitas: $visitas")))),
  34.     end_html,
  35.     ;
  36.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Contador CGI

Notapor primitivo » 2013-06-17 19:45 @864

Vale, lo ensayaré.

Muchas gracias, explorer, como siempre.

Un pregunta ¿Dónde puedo conseguir FAQ sobre PSGI?
primitivo
Perlero nuevo
Perlero nuevo
 
Mensajes: 80
Registrado: 2013-03-22 23:05 @004


Volver a Básico

¿Quién está conectado?

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