#!/usr/bin/perl -w use strict; use CGI::Request; use DBI; require 5.005; $| = 1; # OUTPUT_AUTOFLUSH my $req = new CGI::Request; my $DataKey = "domain"; my $Driver = 'mysql'; my $DataBase = 'webstat1'; my $Table = 'sites'; my $User = 'statadmin'; my $Password = 'statsrus'; my $dbh; my @Fields = qw( priority domain server_name server_type log_code log_location ip_addr username timestamp ); my $button = (defined($req->param("button"))) ? $req->param("button") : "Default"; my %FormData = getformdata(); ## MAIN ################################ MAIN: { db_connect(); search_page() if ($button eq "Search" || ( $button eq "Default" && !defined %FormData)); form_page() if ($button eq "Find Record" || $button eq "Cancel" || ($button eq "Default" && defined (%FormData))); edit_page() if ($button eq "Edit"); add_page() if ($button eq "Add Record"); save_record() if ($button eq "Save"); delete_record() if ($button eq "Delete"); db_disconnect(); } ## Subroutines ########################## sub getformdata() { my $p; my %F; foreach $p ( @Fields ) { $F{$p} = $req->param($p) if (defined ($req->param($p))); } $F{record} = $req->param("record") if (defined ($req->param("record"))); $F{savetype} = $req->param("savetype") if (defined ($req->param("savetype"))); return %F; } sub print_htmlheader() { print "Content-type: text/html\n\n"; print <<__END_OF_HTML__; Webstat Administration
__END_OF_HTML__ # FIXME # # # #

Webstat Site Administrator

} sub print_htmlfooter { my $page = shift; print "
\n"; print "
\n"; if ($page eq "search") { print " \n"; } elsif ($page eq "form") { print " \n"; print " \n"; print " \n"; print " \n"; } elsif ($page eq "edit" || $page eq "add") { print " \n"; print " \n"; print " \n"; } print <<__END_OF_HTML__;
__END_OF_HTML__ } sub db_connect() { my $dsn = "DBI:$Driver:$DataBase"; $dbh = DBI->connect($dsn, $User, $Password, {RaiseError => 1, AutoCommit => 1}); } sub db_disconnect() { $dbh->disconnect; } ## Pages ############################### sub search_page { my $message = shift; print_htmlheader(); print "

$message

" if ($message); print <<__END_OF_HTML__;
Search by $DataKey:
__END_OF_HTML__ print_htmlfooter("search"); } sub form_page { my $message = shift; my $hashref; my $field; my $query = "select * from $Table where $DataKey = ?"; my $sth = $dbh->prepare($query); $sth->execute($FormData{$DataKey}); print_htmlheader(); print "
\n"; print "

$message

\n" if (defined($message)); print "\n"; while (defined($hashref = $sth->fetchrow_hashref)) { foreach $field ( @Fields ) { print " \n"; } } print ""; print "
$field: $$hashref{$field} 
\n"; print "
\n"; print_htmlfooter("form"); } sub edit_page { my $message = shift; my $hashref; my $query = "select * from $Table where $DataKey = ?"; my $sth = $dbh->prepare($query); $sth->execute($FormData{record}); print_htmlheader(); print "
\n"; print "

$message

\n" if (defined($message)); while (defined($hashref = $sth->fetchrow_hashref)) { print<<__END_OF_HTML__;
Priority: $$hashref{priority} 
Domain: $$hashref{domain} 
Server Name:
Server Type:
Log Code:
Log Location:
IP Address:
Username:
Time Stamp: $$hashref{timestamp} 
__END_OF_HTML__ } print_htmlfooter("edit"); } sub add_page { print_htmlheader(); my $hashref; my $field; print "
\n\n"; print <<__END_OF_HTML__; __END_OF_HTML__ print "
Priority:
Domain:
Server Name:
Server Type:
Log Code:
Log Location:
IP Address:
Username:
\n
\n"; print_htmlfooter("add"); } sub save_record() { # This sub is used to actually save the data to the database if ($FormData{savetype} eq "add") { my $hashref; my %rst; my $field; my @values; my @colname; } elsif ($FormData{savetype} eq "edit") { my $field; my $query = "update $Table set ? where $DataKey = '$FormData{$DataKey}'"; my $sth = $dbh->prepare($query); print_htmlheader(); print $query; foreach $field (@Fields) { print "$field: $FormData{$field}
\n" if ($field ne "domain" && $field ne "priority"); } form_page("Record Saved"); } } sub delete_record() { } sub data_page() { }