I hope someone can help me out.
I set up this cgi file and html form on a Unix server. The script
changes a user's password in a text file.
This works correctly on a Unix Server. However, I need to move these
files to an IIS server.
In testing on the IIS server, I get an HTTP Error 405- Method not
allowed when the form is submitted.
I did some research, but was unable to determine how to correct the
error.
If anyone could help me out, I'd really appreciate it.
Thanks, Maureen
#!/usr/bin/perl
require "cgi-lib.pl";
#process incoming form data
&ReadParse;
#set content type
print &PrintHeader;
#initialize variables
$pwfile =
"/data1/hypermart.net/worldwidewebstrategies/datafile/pwdata.txt";
$tmpfile =
"/data1/hypermart.net/worldwidewebstrategies/datafile/pwdata.tmp";
$lokfile =
"/data1/hypermart.net/worldwidewebstrategies/datafile/pwlock.fil";
#Print initial tags for web page
print "<HTML><BODY>\n";
#check for existence of password file
unless (-e $pwfile)
{
#password file doesn't exist!
#print message & shut down
print <<"PrintTag";
<H1>Sorry!</H1>
<P>$pwfile has't been uploaded to the
proper directory. Please contact the webmaster.</P>
</BODY>
</HTML>
PrintTag
exit(0);
}
#check for blank form fields
if ($in{'oldname'}eq"" || $in{'oldpw'}eq"")
{
#re-create form and shut down program
print <<"PrintTag";
<P><B>ERROR:</B> Please type your current username and
password in the spaces provided.</P>
<FORM
ACTION="http://server37.hypermart.net/worldwidewebstrategies/cgi-bin/changepw.cgi"
METHOD="post">
<P>Your current username:<BR>
<INPUT TYPE="text" NAME="oldname" VALUE="$in{'oldname'}"></P>
<P>Your current password:<BR>
<INPUT TYPE="text"NAME="oldpw" VALUE="$in{'oldpw'}"></P>
<P>Your new password:<BR>
<INPUT TYPE="text" NAME="newpw1" VALUE="$in{'newpw1'}"></P>
<P>Type your new password again:<BR>
<INPUT TYPE="text" NAME="newpw2" VALUE="$in{'newpw2'}"></P>
<P>
PrintTag
if ($in{'delete'} eq "yes")
{
print "<INPUT TYPE=\"checkbox\"
NAME=\"delete\" VALUE=\"yes\" CHECKED>\n";
}
else
{
print "\n";
}
print <<"PrintTag";
</P>
<INPUT TYPE="submit" VALUE="Change">
</FORM>
</BODY>
</HTML>
PrintTag
exit(0);
}
#make sure new passwords match
if ($in{'newpw1'} ne $in{'newpw2'})
{
#re-create form and shut down program
print <<"PrintTag";
<P><B>ERROR:</B> Your new passwords didn't match.
You must type your new password exactly the same way twice.
Please try again.</P>
<FORM
ACTION="http://server37.hypermart.net/worldwidewebstrategies/cgi-bin/changepw.cgi"
METHOD="post">
<P>Your current username:<BR>
<INPUT TYPE="text" NAME="oldname" VALUE="$in{'oldname'}"></P>
<P>Your current password:<BR>
<INPUT TYPE="text" NAME="oldpw" VALUE="$in{'oldpw'}"></P>
<P>Your new password:<BR>
<INPUT TYPE="text" NAME="newpw1"></P>
<P>Type your new password again:<BR>
<INPUT TYPE="text" NAME="newpw2"></P>
<INPUT TYPE="submit" VALUE="Change">
</FORM>
</BODY>
</HTML>
PrintTag
exit(0);
}
#check for existence of lock file
if (-e $lokfile)
{
#lock file exists! print message & shut down
print <<"PrintTag";
<H1>Try again!</H1>
<P>The database is in use. Please try again later.</P>
</BODY>
</HTML>
PrintTag
exit(0);
}
#everything is okay. Create lock file.
open(LOCK_FILE, ">$lokfile") ||
die "Couldn't create $lokfile\n";
#open password file in read-only mode
open(FILE,"$pwfile") ||
die "Can't find $pwfile.\n";
#store database contents in an array and close file
@indata = <FILE>;
close(FILE);
#open temp file in overwrite mode
open(TEMP,">$tmpfile") ||
die "Can't create $tmpfile.\n";
#copy password file contents to temp file
#use a foreach loop to process each record in the array
foreach $i (@indata)
{
#remove hard return character from each record
chomp($i);
#split fields on pipe character
#assign a variable name to each of the fields
($username,$password) = split(/\|/,$i);
if ($username eq $in{'oldname'} &&
$password eq $in{'oldpw'} &&
$in{'delete'} ne "yes")
{
print TEMP "$in{'oldname'}|$in{'newpw1'}\n";
print "<P><h1> Success!</h1>Your password has been changed.</P>\n";
}
elsif ($username eq $in{'oldname'} &&
$in{'delete'} eq "yes")
{
print "<P>Your password has been deleted.</P>\n";
}
else
{
print TEMP "$i\n";
}
}
#close temp file
close(TEMP);
#change file names
rename($pwfile, $pwfile.".old");
rename($tmpfile, $pwfile);
#close and delete lock file
close(LOCK_FILE);
unlink($lokfile);
#close web page
print "<P>Thank you! </P>\n";
print "</BODY></HTML>\n";
#end of script
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]