Hi. The hosting company that I am with says that you only need "execute for scripts" permissions to run Perl scripts in my cgi-bin directory. However, I'm unable to run *any* of my scripts. Might anyone know why that may be? Whenever I try to, I get a 403.1 Forbidden: Execute Access Forbidden. The hosting company refuses to tell me how to get my scripts working, and cling to this motto "We provide accessibility, not functionality." So, I have no idea how to get my scripts going. Below is one of my many scripts that simply won't run.
Thanks for your help
Nick Hoffman
#!perl\perl.exe
use DBI;
use strict;
use CGI::Carp qw(fatalsToBrowser);
#data source name
my ($dsn) = "DBI:ODBC:ebahoops";
#for holding the username and password that the user entered
my (@username, @password);
#for holding the usernameS and passwordS in the pwd file
my (@unames, @pwds);
#whether the username and password exist AND match
my ($match) = "false";
#file that holds the different EBA divisions
my ($DivisionsFile) = "divisions.dat";
my (@division_contents);
#path to pwd file
my ($pwd_file) = "dont_delete.dat";
#for converting query string
my ($NameValue, $Name, $Value);
#array for holding query data
my (@data);
#database and statement handles
my ($dbh);
my ($sth);
#array for holding team names and numbers
my (@COEDTeamNames, @COEDTeamNums, @COEDDivisions);
my (@BoysTeamNames, @BoysTeamNums, @BoysDivisions);
my (@GirlsTeamNames, @GirlsTeamNums, @GirlsDivisions);
#temp vars
my (@temp, @params, $counter, $temp);
#put each param into the array
@params = split("&", $ENV {'QUERY_STRING'});
#convert ugly chars to regular chars
$counter = 0;
while (@params[$counter])
{
($Name, $Value) = split("=", @params[$counter]);
$Value =~ tr/+/ /;
$Value =~ s/%([\dA-Fa-f][\dA-Fa-f])/ pack ("C", hex($1))/eg;
@params[$counter] = $Name . "=" . $Value;
$counter++;
}
print <<HTMLSTUFF;
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="description" content="The Official Etobicoke Basketball
Association's Web Page">
<meta name="keywords" content="EBA, Etobicoke Basketball Association,
Basketball, League, BBall, Ball, Sport, Sports, fun, games, activity,
activities, net">
<title>Etobicoke Basketball Association - Registration Form</title>
</head>
<body bgcolor="#FFFFFF" link="#FF0000" vlink="#FF0000" alink="#FF0000">
<table border=0 cellpadding=0 cellspacing=0 width=600>
<tr>
<td valign="top" width="600">
<table border=0 cellpadding=0 cellspacing=0 width=100%>
<tr>
<td colspan=2>
<center>
<table border=3 cellpadding=10 cellspacing=0>
<tr>
<td>
<center>
<b>ETOBICOKE
BASKETBALL ASSOCIATION</b><br>
<b>Administration
Page</b>
</center>
</td>
</tr>
</table>
</center>
</td>
</tr>
<tr>
<td width=70%> </td>
<td width=30%> </td>
</tr>
HTMLSTUFF
;
if ((@params[0] !~ "username=") || (@params[1] !~ "password="))
{ #if the username or password isn't specified, ask for it
print "
<form action=\"edit_teams.pl\" method=\"get\">
<tr>
<td width=70%>Username:</td>
<td width=30%><input type=text size=12 maxlength=12
name=username></td>
</tr>
<tr>
<td width=70%>Password</td>
<td width=30%><input type=password size=12 maxlength=12
name=password></td>
</tr>
<tr>
<td width=70%> </td>
<td width=30%> </td>
</tr>
<tr>
<td colspan=2><center><input type=submit
value=\"Submit\"
STYLE=\"background:AD5100\"><center></td>
</form>
</tr>
</table>
";
}
else
{
#split up the username
@username = split("=", @params[0]);
@password = split("=", @params[1]);
#encrypt the password
@password[2] = crypt(@password[1], "fish");
#grab the usernames and passwords from the pwd file
open (pwd, $pwd_file) || die print "Error while opening pwd file for
reading:<br>$!<br>";
@temp = <pwd>;
close pwd;
#build the uname and pwd arrays
$counter = 0;
while ((@temp[$counter]) && ($match eq "false"))
{
(@unames[$counter], @pwds[$counter]) = split (",", @temp[$counter]);
#get rid of the end-of-line char from the pwd
chomp(@pwds[$counter]);
if ((@username[1] eq @unames[$counter]) && (@password[2] eq
@pwds[$counter]))
{$match = "true";}
$counter++;
}
if ($match eq "false")
{
print "
<tr>
<td colspan=2>
<b><font color=red><center>
ERROR: the username and password do not match
</center></font></b>
</td>
</tr>
</table>
";
}
else #the username and password match
{
if (@username[1] eq "admin")
{
print "
<tr><td width=100%><b><font size=+1>Team
Editing</font></b></td></tr>
<tr><td width=100%><font size=-1>You are logged in as
the
administrator.</font></td></tr>
<tr><td width=100%> </td></tr>
<tr><td width=100%>
";
#get all of the existing teams
#***Connect to the database***
$dbh = DBI->connect($dsn, "", "") || die print
"$DBI::errstr<hr>";
#***Extract the teams from the database
$sth = $dbh->prepare("SELECT TeamNum, TeamName, Division FROM
Teams WHERE
Gender=? ORDER BY Gender, Division, TeamName") || die print "Died while
preparing:<br>$DBI::errstr<hr>";
#execute for CO-ED and retrieve the data
$sth->execute('CO-ED') || die print "Died while
executing:<br>$DBI::errstr<hr>";
$counter = 0;
while (@data = $sth->fetchrow_array())
{
@COEDTeamNums[$counter] = @data[0];
@COEDTeamNames[$counter] = @data[1];
@COEDDivisions[$counter] = @data[2];
$counter++;
}
#execute for Boys and retrieve the data
$sth->execute('Boys') || die print "Died while
executing:<br>$DBI::errstr<hr>";
$counter = 0;
while (@data = $sth->fetchrow_array())
{
@BoysTeamNums[$counter] = @data[0];
@BoysTeamNames[$counter] = @data[1];
@BoysDivisions[$counter] = @data[2];
$counter++;
}
#execute for Girls and retrieve the data
$sth->execute('Girls') || die print "Died while
executing:<br>$DBI::errstr<hr>";
$counter = 0;
while (@data = $sth->fetchrow_array())
{
@GirlsTeamNums[$counter] = @data[0];
@GirlsTeamNames[$counter] = @data[1];
@GirlsDivisions[$counter] = @data[2];
$counter++;
}
if ((@COEDTeamNums == 0) && (@BoysTeamNums == 0) &&
(@GirlsTeamNums ==
0)) #no teams currently exist
{ #make sure at least 1 team exists
print "
No teams currently exist.<p>
<table border=0 cellpadding=4 cellspacing=0
width=100%>
";
}
else
{ #at least 1 team exists, so let's display them
print "
<table border=0 cellpadding=4 cellspacing=20
width=100%>
<tr>
<td
bgcolor=AD5200><b>CO-ED</b></td>
<td
bgcolor=AD5200><b>Boys</b></td>
<td
bgcolor=AD5200><b>Girls</b></td>
</tr>
<tr>
<td bgcolor=AD5200 valign=top>
<table border=0
cellpadding=4 cellspacing=0>
<tr>
<td
bgcolor=AD5200 width=50%><b>Name</b></td>
<td
bgcolor=AD5200 width=50%><b>Division</b></td>
</tr>
";
$counter = 0;
while (@COEDTeamNums[$counter])
{
print " <tr>
<td
bgcolor=AD6200 width=50%>@COEDTeamNames[$counter]</td>
<td
bgcolor=AD6200 width=50%>@COEDDivisions[$counter]</td>
</tr>";
$counter++;
} #end while
print " </table>
</td>
<td bgcolor=AD5200 valign=top>
<table border=0
cellpadding=4 cellspacing=0>
<tr>
<td
bgcolor=AD5200><b>Name</b></td>
<td
bgcolor=AD5200><b>Division</b></td>
</tr>
";
$counter = 0;
while (@BoysTeamNums[$counter])
{
print " <tr>
<td
bgcolor=AD6200>@BoysTeamNames[$counter]</td>
<td
bgcolor=AD6200>@BoysDivisions[$counter]</td>
</tr>";
$counter++;
} #end while
print " </table>
</td>
<td bgcolor=AD5200 valign=top>
<table border=0
cellpadding=4 cellspacing=0>
<tr>
<td
bgcolor=AD5200><b>Name</b></td>
<td
bgcolor=AD5200><b>Division</b></td>
</tr>
";
$counter = 0;
while (@GirlsTeamNums[$counter])
{
print " <tr>
<td
bgcolor=AD6200>@GirlsTeamNames[$counter]</td>
<td
bgcolor=AD6200>@GirlsDivisions[$counter]</td>
</tr>";
$counter++;
} #end while
print " </table>
</td>
</tr>
</table>
</td>
</tr>
";
print "
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td> </td>
<td> </td>
</tr>
<tr>
<td colspan=2>
<table border=0 cellpadding=4
cellspacing=0 width=100%>
<tr>
<td width=40%
bgcolor=AD5200>
<form
action=\"rename_a_team.pl\" method=\"get\">
<input
type=hidden name=username value=@username[1]>
<input
type=hidden name=password value=@password[1]>
<b>Rename A
Team</b>
</td>
<td width=40%
bgcolor=AD5200> </td>
<td width=20%
bgcolor=AD5200> </td>
</tr>
<tr>
<td width=40%
bgcolor=AD5200> Current Team
Name:</td>
<td width=40%
bgcolor=AD5200><input type=text size=20 maxlength=50
name=CurrentTeamName></td>
<td width=20%
bgcolor=AD5200> </td>
</tr>
<tr>
<td width=40%
bgcolor=AD5200> New Team
Name:</td>
<td width=40%
bgcolor=AD5200><input type=text size=20 maxlength=50
name=NewTeamName></td>
<td width=20%
bgcolor=AD5200><input type=submit
value=\"Submit\"></td>
</form>
</tr>
<tr>
<td
bgcolor=AD5200> </td>
<td
bgcolor=AD5200> </td>
<td
bgcolor=AD5200> </td>
</tr>
<tr>
<td
bgcolor=AD6200> </td>
<td
bgcolor=AD6200> </td>
<td
bgcolor=AD6200> </td>
</tr>
<tr>
<td width=40%
bgcolor=AD6200>
<form
action=\"delete_a_team.pl\" method=\"get\">
<input
type=hidden name=username value=@username[1]>
<input
type=hidden name=password value=@password[1]>
<b>Delete A
Team</b>
</td>
<td width=40%
bgcolor=AD6200> </td>
<td width=20%
bgcolor=AD6200> </td>
</tr>
<tr>
<td width=40%
bgcolor=AD6200> Team Name:</td>
<td width=40%
bgcolor=AD6200><input type=text size=20 maxlength=50
name=TeamName></td>
<td width=20%
bgcolor=AD6200><input type=submit
value=\"Submit\"></td>
</form>
</tr>
<tr>
<td
bgcolor=AD6200> </td>
<td
bgcolor=AD6200> </td>
<td
bgcolor=AD6200> </td>
</tr>
<tr>
<td
bgcolor=AD5200> </td>
<td
bgcolor=AD5200> </td>
<td
bgcolor=AD5200> </td>
</tr>
<tr>
<td width=40%
bgcolor=AD5200>
<form
action=\"add_a_game.pl\" method=\"get\">
<input
type=hidden name=username value=@username[1]>
<input
type=hidden name=password value=@password[1]>
<b>Add A
Game</b>
</td>
<td width=40%
bgcolor=AD5200> </td>
<td width=20%
bgcolor=AD5200> </td>
</tr>
<tr>
<td width=40%
bgcolor=AD5200> Team Name:</td>
<td width=40%
bgcolor=AD5200><input type=text size=20 maxlength=50
name=Team1Name></td>
<td width=20%
bgcolor=AD5200> </td>
</tr>
<tr>
<td width=40%
bgcolor=AD5200> Team Name:</td>
<td width=40%
bgcolor=AD5200><input type=text size=20 maxlength=50
name=Team2Name></td>
<td width=20%
bgcolor=AD5200> </td>
</tr>
<tr>
<td width=40%
bgcolor=AD5200> Date
(DD/MM/YY):</td>
<td width=40%
bgcolor=AD5200><input type=text size=20 maxlength=8
name=Date></td>
<td width=20%
bgcolor=AD5200> </td>
</tr>
<tr>
<td width=40%
bgcolor=AD5200> Time:</td>
<td width=40%
bgcolor=AD5200><input type=text size=20 maxlength=20
name=Time></td>
<td width=20%
bgcolor=AD5200> </td>
</tr>
<tr>
<td width=40%
bgcolor=AD5200> Location:</td>
<td width=40%
bgcolor=AD5200><input type=text size=20 maxlength=255
name=Location></td>
<td width=20%
bgcolor=AD5200><input type=submit
value=\"Submit\"></td>
</form>
</tr>
<tr>
<td
bgcolor=AD5200> </td>
<td
bgcolor=AD5200> </td>
<td
bgcolor=AD5200> </td>
</tr>
";
} #end else: there's at least 1 team
print "
<tr>
<td
bgcolor=AD6200> </td>
<td
bgcolor=AD6200> </td>
<td
bgcolor=AD6200> </td>
</tr>
<tr>
<td width=40%
bgcolor=AD6200>
<form
action=\"add_a_team.pl\" method=\"get\">
<input
type=hidden name=username value=@username[1]>
<input
type=hidden name=password value=@password[1]>
<b>Add A
Team</b>
</td>
<td width=40%
bgcolor=AD6200> </td>
<td width=20%
bgcolor=AD6200> </td>
</tr>
<tr>
<td width=40%
bgcolor=AD6200> New Team's
Name:</td>
<td width=40%
bgcolor=AD6200><input type=text size=20 maxlength=50
name=NewTeamName></td>
<td width=20%
bgcolor=AD6200> </td>
</tr>
<tr>
<td width=40%
bgcolor=AD6200> New Team's
Division:</td>
<td width=40%
bgcolor=AD6200>
";
#print the divisions, but without the cost
open (divisions, $DivisionsFile) || die print "Error while
opening
divisions file for reading:<br>$!<br>";
@division_contents = <divisions>;
close divisions;
chomp (@division_contents);
foreach $_ (@division_contents)
{
#only grab entries that start with C, B or G
#this gets rid of the "--Select--" and "- - - - - -"
entries
if (/select /)
{print "$_\n";}
elsif (/select_one/)
{}
else #it's an <option> that we want
{
/(<.*?>.*):.*(<.*?>)/;
print "\t\t\t\t\t$1$2\n";
}
}
print "
</select>
</td>
<td
bgcolor=AD6200><input type=submit value=\"Submit\"></form></td>
</table>
</td>
</tr>
";
$dbh->disconnect();
} #end if username == "admin"
else
{
print "
<tr>
<td colspan=2>
<b><font color=red><center>
ERROR: you are not allowed access to
this page
</center></font></b>
</td>
</tr>
</table>
";
}
}
} #end else
print <<HTMLSTUFF;
<tr>
<td colspan=2>
<p>
<form action="edit_teams.pl"
method="get">
<input type=hidden
name=username value=@username[1]>
<input type=hidden
name=password value=@password[1]>
<input type="Submit"
value="Reload Page">
</form>
</td>
</tr>
</td>
</tr>
</table>
</body>
</html>
HTMLSTUFF
;
