• Publicidad

Perl, HTML5 y CCS

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

Perl, HTML5 y CCS

Notapor memrobles » 2016-09-05 11:36 @525

Buenos días.

¿Alguien sabe si se puede agregar código HTML5 a una página CGI?

Este es el código de la página en CGI.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2.     #
  3.     # Ejemplo de CGI::Session para login
  4.     #
  5.     use strict;
  6.     use warnings;
  7.     use diagnostics;
  8.      
  9.     use CGI::Session;
  10.     use CGI ':standard';
  11.     use CGI::Carp qw'fatalsToBrowser warningsToBrowser';
  12.      
  13.      
  14.     ## Creamos el objeto CGI
  15.     my $cgi = CGI->new();  
  16.      
  17.     ## Creamos el objeto CGI::Session
  18.     my $session = CGI::Session->new("driver:File", $cgi, {'Directory'=>'/tmp/'})
  19.         or die CGI::Session->errstr;
  20.      
  21.     ## Enviamos la cookie de sesión al usuario
  22.     print $session->header;
  23.      
  24.     # Aquí guardaremos el perfil del usuario
  25.     my $perfil;
  26.      
  27.     ## Inicialización
  28.     if ( not $session->param('~registrado') ) {     # si el usuario no está registrado
  29.      
  30.         # vemos si se está registrando en este momento
  31.         if (my $nombre = $cgi->param('login_nombre')) {
  32.             my $passwd = $cgi->param('login_passwd');  
  33.      
  34.             # Vemos si es un usuario conocido por nosotros
  35.             # si lo es, obtenemos su perfil
  36.             if ($perfil = usuario_registrado($nombre, $passwd)) {
  37.                
  38.                 # Guardamos el perfil asociado a la sesión
  39.                 $session->param('perfil', $perfil);
  40.                 $session->param('~registrado', 1);
  41.             }
  42.             else {  # Es un desconocido, le pedimos que rellene el registro otra vez
  43.                 presenta_login('Usuario desconocido');
  44.                 exit;
  45.             }
  46.         }
  47.         else {      # No está registrado ni se está registrando
  48.            presenta_login('Identifíquese');
  49.            exit;
  50.         }
  51.     }
  52.     else {          # es un usuario registrado (hay una sesión de él)
  53.         # recuperamos el perfil, desde la sesión
  54.         $perfil = $session->param('perfil');
  55.     }
  56.      
  57.      
  58.     # A partir de aquí, sabemos qué usuario es, y su perfil
  59.     # Podemos presentarle las opciones propias de un usuario registrado
  60.     my $nombre = $perfil->{nombre};         # otra forma de hacerlo sería recuperar esta información
  61.     my $email  = $perfil->{email};          # desde la base de datos, ya que sabemos qué usuario es
  62.      
  63.     if ($cgi->param('Desconectar')) {       # caso de que el usuario quiera desconectarse
  64.         $session->clear(['~registrado']);   # olvidamos que estaba registrado
  65.      
  66.         print       # despedida
  67.             start_html('Desconexión'),
  68.             h1('Desconexión'),
  69.             hr(),
  70.             p("Adios, $nombre"),
  71.             end_html()
  72.             ;
  73.     }
  74.     else {          # una página normal
  75.         print
  76.             start_html('Bienvenido'),
  77.             h1('Bienvenido'),
  78.             hr(),
  79.             p("Bienvenido $nombre ($email)"),
  80.             hr(),
  81.             p(a({-href=>'ficheros.html'},'Ver lista de ficheros')),
  82.             p(a({-href=>$cgi->url() . '?Desconectar=1'},'Desconectar')),
  83.             end_html()
  84.             ;
  85.     }
  86.      
  87.     # Perfil de un determinado usuario
  88.     sub usuario_registrado {
  89.         my ($nombre, $passwd) = @_;
  90.      
  91.         # aquí consultaríamos una base de datos, por ejemplo
  92.         if ($nombre eq 'JF'  and  $passwd eq '2010') {
  93.             # si es un usuario en nuestra base de datos, recuperamos su perfil
  94.             return { nombre => $nombre, email => '[email protected]' };
  95.         }
  96.          
  97.         return;
  98.     }
  99.      
  100.     # Presenta el formulario de entrada
  101.     sub presenta_login {
  102.         my $titulo = shift;
  103.      
  104.         print
  105.             start_html,
  106.             h1('Registro de entrada: ' . $titulo),
  107.             start_form,
  108.             p('Nombre: '     . textfield('login_nombre')),
  109.             p('Contraseña: ' . password_field('login_passwd','',8,8)),
  110.             p(),
  111.             submit('Entrar'),
  112.             end_form,
  113.             end_html()
  114.             ;
  115.     }
  116.  
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


y este https://superdevresources.com/responsive-table/ es un ejemplo de una tabla adaptativa en HTML5 que me gustaría agregar cuando el usuario se registre.

Saludos, compañeros. Que tengan un día chingon. :D
memrobles
Perlero nuevo
Perlero nuevo
 
Mensajes: 27
Registrado: 2015-12-07 15:05 @670

Publicidad

Re: Perl, HTML5 y CCS

Notapor explorer » 2016-09-05 16:54 @746

Con el módulo CGI se puede generar casi cualquier marca HTML. Basta con pasar la opción -any en el momento de la importación:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use CGI qw(-any);
  2. my $q = CGI->new;
  3. print $q->gradient({speed=>'fast',start=>'red',end=>'blue'});
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

(sacado de la documentación de CGI.pm)

El tema de la tabla no tiene ningún misterio. Es una tabla HTML normal y corriente. Lo importante es la parte CSS, que podemos incorporar como archivo externo,
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. print start_html(
  2.         -title=>'Secrets of the Pyramids',
  3.         -author=>'[email protected]',
  4.         -base=>'true',
  5.         -target=>'_blank',
  6.         -meta=>{'keywords'=>'pharaoh secret mummy', 'copyright'=>'copyright 1996 King Tut'},
  7.         -style=>{'src'=>'/styles/style1.css'},                                               # estilos CSS
  8.         -BGCOLOR=>'blue',
  9. );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

o incorporar con el propio CGI, en la cabecera:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. # here's a stylesheet incorporated directly into the page
  2. $newStyle=<<END;
  3. <!--
  4.         P.Tip {
  5.                 margin-right: 50pt;
  6.                 margin-left: 50pt;
  7.                 color: red;
  8.         }
  9.         P.Alert {
  10.                 font-size: 30pt;
  11.                 font-family: sans-serif;
  12.                 color: red;
  13.         }
  14. -->
  15. END
  16.  
  17. print header();
  18. print start_html(
  19.         -title=>'CGI with Style',
  20.         -style=>{
  21.                 -code=>$newStyle,                               # código CSS directo
  22.         }
  23. );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

De todos modos, lo recomendado hoy en día, es dejar de usar el módulo CGI, y usar cosas como HTML::Tiny.

Aquí hay una colección de módulos para tratar con HTML5: Task::HTML5. Pero hay muchos más...
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: Perl, HTML5 y CCS

Notapor memrobles » 2016-09-18 18:13 @801

Gracias, explorer, me funcionó al tiro.

Saludos.
memrobles
Perlero nuevo
Perlero nuevo
 
Mensajes: 27
Registrado: 2015-12-07 15:05 @670


Volver a Web

¿Quién está conectado?

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