#!/usr/bin/perl -w use lib qw!/home/webpaper/perl/lib/perl5 /home/webpaper/perl/lib/perl5/site_perl!; use Fcntl; use CGI qw/:standard/; use MLDBM qw/DB_File Storable/; tie %db, 'MLDBM', 'webpaper_pwds.db', O_CREAT|O_RDWR, 0640 or die $!; tie %clas, 'MLDBM', 'webpaper_clas.db', O_CREAT|O_RDWR, 0640 or die $!; print header; print start_html( -title => "WebPaper - Registo de Clă", -style => { -code => <<"EOCSS"}); body { background: url("/~webpaper/webpaper.png") no-repeat } input { border: solid 1px } div { margin-left: 25%; margin-right: 25%; text-align: center; padding: 15px; border: dotted 1px #999} h1 { text-align: center; margin-top: 15%; margin-bottom: 10px; } EOCSS print h1("WebPaper - Registo de Clă"); if (exists($clas{param("cla")})) { print div(p("Já temos um clă com esse nome. Arranja outro!")); } else { if (length(param("cla")) > 30) { print div(p("Nome de Clâ demasiado grande")); } else { my $id = scalar(keys(%db)) + 1001; my $uid = "web$id"; my $pwd = password(); my $data = { cla => param("cla"), pwd => $pwd }; $db{$uid} = $data; $clas{param("cla")} = $uid; untie %db; print div(p(b("Registo efectuado.")), p(b("Clă: "),param("cla")), p(b("UserID: "),$uid), p(b("Password: "),$pwd)); } } print end_html; sub password { my $pass = "x" x 8; $pass =~ s/./chr((rand()<.5?65:97)+rand(26))/ge; return $pass; }