#!/usr/bin/perl use strict; use warnings; use CGI::Carp qw(fatalsToBrowser); use CGI qw(:standard); use DBD::mysql; use POSIX qw(strftime); print header( -charset=>'iso-8859-7' ); print start_html( -style=>'/data/css/style.css', -title=>'Ψυχωφελή Πνευματικά Κείμενα!' ); my $name = param('name'); my $pray = param('pray'); my $remark = param('remark'); my $email = param('email'); my $date = param('date'); my $host = param('host'); my $username = param('username'); my $password = param('password'); my $date = strftime('%y-%m-%d %H:%M:%S', localtime); my $host = gethostbyaddr (pack ("C4", split (/\./, $ENV{'REMOTE_ADDR'})), 2) || $ENV{REMOTE_ADDR}; $host = "Νίκος" if (($host =~ /dell/) or ($host =~ /dell.lan/) or ($host eq "localhost")); my ($select, $row, $data); my $dbh = DBI->connect('DBI:mysql:nikos_db', 'root', 'password', {RaiseError=>1}); #***********************ASK INFORMATION********************** print h1( {class=>'big'}, "Εγγραφή Χρήστη ή Σύνδεση χρήστη!" ); print br() x 3; print start_form( action=>'login.pl' ); print table( {class=>'user_form'}, Tr( td( 'Δίαλεξε Όνομα Χρήστη:' ), td( textfield( 'username' ))), Tr( td( 'Δίαλεξε Κωδικό Πρόσβασης:' ), td( textfield( 'password' ))), Tr( td( 'Ποιό είναι το email σου?' ), td( textfield( 'email' ))), Tr( td( submit( 'Εγγραφή' )), td( submit( 'Σύνδεση' ))) ); print hidden(-name=>'name', -value=>$name); print hidden(-name=>'pray', -value=>$pray); print hidden(-name=>'remark', -value=>$remark); print hidden(-name=>'email', -value=>$email); print hidden(-name=>'date', -value=>$date); print hidden(-name=>'host', -value=>$host); print end_form(); print br() x 2; exit 0 unless ( param('Σύνδεση') or param('Εγγραφή') ); #*********************CHECK IF USER FILLED ALL ENTRIES********************* my %error_msgs = ( username => "Πρέπει να συμπληρώσεις username!", password => "Πρέπει να συμπληρώσεις password!", email => "Χρειάζεται και το email σου!" ); my $error_found; foreach (keys %error_msgs) { unless( param($_) ) { print h1( {class=>'yellow'}, $error_msgs{$_} ), br; $error_found++; } } exit 0 if $error_found; if ( param('Σύνδεση') ) { #***********CHECK IF USERNAME AND PASSWORD ARE CORRECT*********** $select = $dbh->prepare( "SELECT username, password, email FROM users" ); $select->execute; while( $row = $select->fetchrow_hashref ) { unless ( ($username eq $row->{username}) and ($password eq $row->{password}) and ($email eq $row->{email}) ) { print h1( {class=>'cyan'}, "Λάθος όνομα χρήστη ή κωδικός πρόσβασης ή χρήστης μη εγγεγραμμένος στην βάση !" ); exit 0; } print redirect("/cgi-bin/show.pl?name=$name&pray=$pray&remark=$remark&email=$email&date=$date&host=$host"); exit 0; } } exit 0 unless( param('Εγγραφή') ); #***********CHECK IF USERNAME ALREADY EXISTS AND ADD USER TO DATABASE*********** $select = $dbh->prepare( "SELECT username FROM users" ); $select->execute; while( $row = $select->fetchrow_hashref ) { if ($username eq $row->{username}) { print h1( {class=>'cyan'}, "Αυτός ο Χρήστης υπάρχει ήδη! Διάλεξε άλλο όνομα χρήστη!" ); exit 0; } } $select = $dbh->prepare( "INSERT INTO users (username, password, email, date, host) VALUES (?, ?, ?, ?, ?)" ); $select->execute( $username, $password, $email, $date, $host); #****************************SHOW THE NUMBER OF USERS*************************** $select = $dbh->prepare( "SELECT count(*) FROM users" ); $select->execute; my ($count) = $select->fetchrow_array(); print h1( {class=>'lime'}, "Ευχαριστώ πολύ ", span( {class=>'yellow'}, "$username" )); print h1( {class=>'lime'}, "Συνολικά εγγεγραμένοι χρήστες στην βάση: ", span( {class=>'yellow'}, "$count" ));