#!/usr/bin/perl my @data; my $query; if ( $ENV{REQUEST_METHOD} eq 'POST' ) { read(STDIN, $query, $ENV{CONTENT_LENGTH}); } else { $query = $ENV{QUERY_STRING}; } for ( split /&/, $query ){ my ($key, $val) = split /=/; map{ s/\+/ /g; s/%(..)/pack("c", hex($1))/eg; } ($key, $val); $form{$key} = $val; } InitData(); print "Content-type: text/html\n\n"; if ($form{mode} eq 'list'){ List(); } elsif ($form{mode} eq 'register'){ Register(); } elsif ($form{mode} eq 'admin'){ Admin(); } elsif ($form{mode} eq 'admin_change'){ AdminChange(); } else { ShowRegister(); } sub List { my $num = $#data; my $table = "Number of people registered : $num   Cost for all is \12 dollars"; for (@data) { $table .= "". "". ""; } $table .= "
NameHandlePaid?
".$_->{fname}.' '. $_->{lname}."".$_->{handle}."".$_->{paid}."
"; print $table; } sub ShowRegister { print <
First Name:
Last Name:
Handle:
THAT } sub Register { push @data, {'fname' => $form{fname}, 'lname' => $form{lname}, 'handle' => $form{handle}, 'paid' => 'no'}; print < Thanks for registering! Back to Urban LAN THIS SaveData(); } sub Admin { if ( $form{user} eq 'ryan' && $form{pass} eq '9810able12') { my $html = "
"; $html .= ""; my $i = 0; for (@data) { $html .= ""; $html .= ""; $html .= ""; $html .= ""; $i++; } $html .= "
First NameLast NameHandlePaid?
{fname}."\">{lname}."\">{handle}."\">{paid}."\">
"; $html .= ""; $html .= ""; $html .= ""; $html .= ""; $html .= "
"; print $html; } } sub AdminChange { if ( $form{user} eq 'ryan' && $form{pass} eq '9810able12' ) { my $i = 0; for ( @data ) { $_->{fname} = $form{'fname-'.$i}; $_->{lname} = $form{'lname-'.$i}; $_->{handle} = $form{'handle-'.$i}; $_->{paid} = $form{'paid-'.$i}; $i++; } print "Back to table"; SaveData(); } } sub InitData { open( DATA, ".data"); for () { my ($first,$last,$handle,$paid) = split /==/; chomp $paid; push @data, {'fname'=>$first,'lname'=>$last,'handle'=>$handle,'paid'=>$paid}; } close (DATA); } sub SaveData { open (DATA, ">.data"); for (@data) { print DATA $_->{fname}.'=='. $_->{lname}.'=='. $_->{handle},'=='. $_->{paid}."\n"; } close DATA; }