Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Perl > Perl Misc > perl cgi problem

Reply
Thread Tools

perl cgi problem

 
 
pfancy
Guest
Posts: n/a
 
      07-08-2004
Ok. since this is perl and it deals with cgi i was hoping someone can help
me out. I am working on a guest book and I get to the addguest part. and
when i click on the submit button to add it to the cgi part it says it can
not find my guestbook.cgi file. i have that file in my cgi-bin folder what
is up
It may because i don't have a sendmail thing. what can you tell me and am i
not adding something that needs to be there?



#!/usr/local/bin/perl
################################################## ##########################
##
# Guestbook Version 2.3.1
#
# Copyright 1996 Matt Wright http://www.velocityreviews.com/forums/(E-Mail Removed)
#
# Created 4/21/95 Last Modified 10/29/95
#
# Scripts Archive at: http://www.scriptarchive.com/
#
################################################## ##########################
##
# COPYRIGHT NOTICE
#
# Copyright 1996 Matthew M. Wright All Rights Reserved.
#
#
#
# Guestbook may be used and modified free of charge by anyone so long as
#
# this copyright notice and the comments above remain intact. By using this
#
# code you agree to indemnify Matthew M. Wright from any liability that
#
# might arise from it's use.
#
#
#
# Selling the code for this program without prior written consent is
#
# expressly forbidden. In other words, please ask first before you try and
#
# make money off of my program.
#
#
#
# Obtain permission before redistributing this software over the Internet or
#
# in any other medium. In all cases copyright and header must remain
intact.#
################################################## ##########################
##
# Set Variables

$guestbookurl = "http://www.yourhost.com/guestbook/guestbook.html";
$guestbookreal = "/home/yourhostt/guestbook/guestbook.html";
$guestlog = "http://www.yourhost.com/guestbook/guestlog.html";
$cgiurl = "http://www.yourhost.com/guestbook/cgi-bin/guestbook.pl";
$date_command = "/usr/bin/date";

# Set Your Options:
$mail = 0; # 1 = Yes; 0 = No
$uselog = 1; # 1 = Yes; 0 = No
$linkmail = 1; # 1 = Yes; 0 = No
$separator = 1; # 1 = <hr>; 0 = <p>
$redirection = 0; # 1 = Yes; 0 = No
$entry_order = 1; # 1 = Newest entries added first;
# 0 = Newest Entries added last.
$remote_mail = 0; # 1 = Yes; 0 = No
$allow_html = 1; # 1 = Yes; 0 = No
$line_breaks = 0; # 1 = Yes; 0 = No

# If you answered 1 to $mail or $remote_mail you will need to fill out
# these variables below:
$mailprog = '/usr/lib/sendmail';
$recipient = '(E-Mail Removed)';

# Done
################################################## ##########################
##

# Get the Date for Entry
$date = `$date_command +"%A, %B %d, %Y at %T (%Z)"`; chop($date);
$shortdate = `$date_command +"%D %T %Z"`; chop($shortdate);

# Get the input
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

# Split the name-value pairs
@pairs = split(/&/, $buffer);

foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);

# Un-Webify plus signs and %-encoding
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;

if ($allow_html != 1) {
$value =~ s/<([^>]|\n)*>//g;
}

$FORM{$name} = $value;
}

# Print the Blank Response Subroutines
&no_comments unless $FORM{'comments'};
&no_name unless $FORM{'realname'};

# Begin the Editing of the Guestbook File
open (FILE,"$guestbookreal") || die "Can't Open $guestbookreal: $!\n";
@LINES=<FILE>;
close(FILE);
$SIZE=@LINES;

# Open Link File to Output
open (GUEST,">$guestbookreal") || die "Can't Open $guestbookreal: $!\n";

for ($i=0;$i<=$SIZE;$i++) {
$_=$LINES[$i];
if (/<!--begin-->/) {

if ($entry_order eq '1') {
print GUEST "<!--begin-->\n";
}

if ($line_breaks == 1) {
$FORM{'comments'} =~ s/\cM\n/<br>\n/g;
}

print GUEST "<b>$FORM{'comments'}</b><br>\n";

if ($FORM{'url'}) {
print GUEST "<a href=\"$FORM{'url'}\">$FORM{'realname'}</a>";
}
else {
print GUEST "$FORM{'realname'}";
}

if ( $FORM{'username'} ){
if ($linkmail eq '1') {
print GUEST " \&lt;<a href=\"mailto:$FORM{'username'}\">";
print GUEST "$FORM{'username'}</a>\&gt;";
}
else {
print GUEST " &lt;$FORM{'username'}&gt;";
}
}

print GUEST "<br>\n";

if ( $FORM{'city'} ){
print GUEST "$FORM{'city'},";
}

if ( $FORM{'state'} ){
print GUEST " $FORM{'state'}";
}

if ( $FORM{'country'} ){
print GUEST " $FORM{'country'}";
}

if ($separator eq '1') {
print GUEST " - $date<hr>\n\n";
}
else {
print GUEST " - $date<p>\n\n";
}

if ($entry_order eq '0') {
print GUEST "<!--begin-->\n";
}

}
else {
print GUEST $_;
}
}

close (GUEST);

# Log The Entry

if ($uselog eq '1') {
&log('entry');
}


#########
# Options

# Mail Option
if ($mail eq '1') {
open (MAIL, "|$mailprog $recipient") || die "Can't open $mailprog!\n";

print MAIL "Reply-to: $FORM{'username'} ($FORM{'realname'})\n";
print MAIL "From: $FORM{'username'} ($FORM{'realname'})\n";
print MAIL "Subject: Entry to Guestbook\n\n";
print MAIL "You have a new entry in your guestbook:\n\n";
print MAIL "------------------------------------------------------\n";
print MAIL "$FORM{'comments'}\n";
print MAIL "$FORM{'realname'}";

if ( $FORM{'username'} ){
print MAIL " <$FORM{'username'}>";
}

print MAIL "\n";

if ( $FORM{'city'} ){
print MAIL "$FORM{'city'},";
}

if ( $FORM{'state'} ){
print MAIL " $FORM{'state'}";
}

if ( $FORM{'country'} ){
print MAIL " $FORM{'country'}";
}

print MAIL " - $date\n";
print MAIL "------------------------------------------------------\n";

close (MAIL);
}

if ($remote_mail eq '1' && $FORM{'username'}) {
open (MAIL, "|$mailprog -t") || die "Can't open $mailprog!\n";

print MAIL "To: $FORM{'username'}\n";
print MAIL "From: $recipient\n";
print MAIL "Subject: Entry to Guestbook\n\n";
print MAIL "Thank you for adding to my guestbook.\n\n";
print MAIL "------------------------------------------------------\n";
print MAIL "$FORM{'comments'}\n";
print MAIL "$FORM{'realname'}";

if ( $FORM{'username'} ){
print MAIL " <$FORM{'username'}>";
}

print MAIL "\n";

if ( $FORM{'city'} ){
print MAIL "$FORM{'city'},";
}

if ( $FORM{'state'} ){
print MAIL " $FORM{'state'}";
}

if ( $FORM{'country'} ){
print MAIL " $FORM{'country'}";
}

print MAIL " - $date\n";
print MAIL "------------------------------------------------------\n";

close (MAIL);
}

# Print Out Initial Output Location Heading
if ($redirection eq '1') {
print "Location: $guestbookurl\n\n";
}
else {
&no_redirection;
}

#######################
# Subroutines

sub no_comments {
print "Content-type: text/html\n\n";
print "<html><head><title>No Comments</title></head>\n";
print "<body><h1>Your Comments appear to be blank</h1>\n";
print "The comment section in the guestbook fillout form appears\n";
print "to be blank and therefore the Guestbook Addition was not\n";
print "added. Please enter your comments below.<p>\n";
print "<form method=POST action=\"$cgiurl\">\n";
print "Your Name:<input type=text name=\"realname\" size=30 ";
print "value=\"$FORM{'realname'}\"><br>\n";
print "E-Mail: <input type=text name=\"username\"";
print "value=\"$FORM{'username'}\" size=40><br>\n";
print "City: <input type=text name=\"city\" value=\"$FORM{'city'}\" ";
print "size=15>, State: <input type=text name=\"state\" ";
print "value=\"$FORM{'state'}\" size=15> Country: <input type=text ";
print "name=\"country\" value=\"$FORM{'country'}\" size=15><p>\n";
print "Comments:<br>\n";
print "<textarea name=\"comments\" COLS=60 ROWS=4></textarea><p>\n";
print "<input type=submit> * <input type=reset></form><hr>\n";
print "Return to the <a href=\"$guestbookurl\">Guestbook</a>.";
print "\n</body></html>\n";

# Log The Error
if ($uselog eq '1') {
&log('no_comments');
}

exit;
}

sub no_name {
print "Content-type: text/html\n\n";
print "<html><head><title>No Name</title></head>\n";
print "<body><h1>Your Name appears to be blank</h1>\n";
print "The Name Section in the guestbook fillout form appears to\n";
print "be blank and therefore your entry to the guestbook was not\n";
print "added. Please add your name in the blank below.<p>\n";
print "<form method=POST action=\"$cgiurl\">\n";
print "Your Name:<input type=text name=\"realname\" size=30><br>\n";
print "E-Mail: <input type=text name=\"username\"";
print " value=\"$FORM{'username'}\" size=40><br>\n";
print "City: <input type=text name=\"city\" value=\"$FORM{'city'}\" ";
print "size=15>, State: <input type=text name=\"state\" ";
print "value=\"$FORM{'state'}\" size=2> Country: <input type=text ";
print "value=USA name=\"country\" value=\"$FORM{'country'}\" ";
print "size=15><p>\n";
print "Comments have been retained.<p>\n";
print "<input type=hidden name=\"comments\" ";
print "value=\"$FORM{'comments'}\">\n";
print "<input type=submit> * <input type=reset><hr>\n";
print "Return to the <a href=\"$guestbookurl\">Guestbook</a>.";
print "\n</body></html>\n";

# Log The Error
if ($uselog eq '1') {
&log('no_name');
}

exit;
}

# Log the Entry or Error
sub log {
$log_type = $_[0];
open (LOG, ">>$guestlog");
if ($log_type eq 'entry') {
print LOG "$ENV{'REMOTE_HOST'} - [$shortdate]<br>\n";
}
elsif ($log_type eq 'no_name') {
print LOG "$ENV{'REMOTE_HOST'} - [$shortdate] - ERR: No Name<br>\n";
}
elsif ($log_type eq 'no_comments') {
print LOG "$ENV{'REMOTE_HOST'} - [$shortdate] - ERR: No ";
print LOG "Comments<br>\n";
}
}

# Redirection Option
sub no_redirection {

# Print Beginning of HTML
print "Content-Type: text/html\n\n";
print "<html><head><title>Thank You</title></head>\n";
print "<body><h1>Thank You For Signing The Guestbook</h1>\n";

# Print Response
print "Thank you for filling in the guestbook. Your entry has\n";
print "been added to the guestbook.<hr>\n";
print "Here is what you submitted:<p>\n";
print "<b>$FORM{'comments'}</b><br>\n";

if ($FORM{'url'}) {
print "<a href=\"$FORM{'url'}\">$FORM{'realname'}</a>";
}
else {
print "$FORM{'realname'}";
}

if ( $FORM{'username'} ){
if ($linkmail eq '1') {
print " &lt;<a href=\"mailto:$FORM{'username'}\">";
print "$FORM{'username'}</a>&gt;";
}
else {
print " &lt;$FORM{'username'}&gt;";
}
}

print "<br>\n";

if ( $FORM{'city'} ){
print "$FORM{'city'},";
}

if ( $FORM{'state'} ){
print " $FORM{'state'}";
}

if ( $FORM{'country'} ){
print " $FORM{'country'}";
}

print " - $date<p>\n";

# Print End of HTML
print "<hr>\n";
print "<a href=\"$guestbookurl\">Back to the Guestbook</a>\n";
print "- You may need to reload it when you get there to see your\n";
print "entry.\n";
print "</body></html>\n";

exit;
}





 
Reply With Quote
 
 
 
 
Paul Lalli
Guest
Posts: n/a
 
      07-08-2004
On Thu, 8 Jul 2004, pfancy wrote:

> Ok. since this is perl and it deals with cgi i was hoping someone can help
> me out. I am working on a guest book and I get to the addguest part. and
> when i click on the submit button to add it to the cgi part it says it can
> not find my guestbook.cgi file. i have that file in my cgi-bin folder what
> is up
> It may because i don't have a sendmail thing. what can you tell me and am i
> not adding something that needs to be there?


There's no way I'm going to look through this massive amounts of code to
find a possible error. However . . . .

>
> $guestbookurl = "http://www.yourhost.com/guestbook/guestbook.html";
> $guestbookreal = "/home/yourhostt/guestbook/guestbook.html";

^^^^^
Is that intentional? everywhere else, it says 'yourhost', but here it's
'yourhostt'. Is it possible that's the file it can't find?

> $guestlog = "http://www.yourhost.com/guestbook/guestlog.html";
> $cgiurl = "http://www.yourhost.com/guestbook/cgi-bin/guestbook.pl";

^^^^

You said it can't find your guestbook.cgi file, but you're posting to
a guestbook.pl file. Is this possibly the cause of your error?

Paul Lalli

<snipped a LOT of lines>
 
Reply With Quote
 
 
 
 
pfancy
Guest
Posts: n/a
 
      07-08-2004

"Paul Lalli" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> On Thu, 8 Jul 2004, pfancy wrote:
>
> > Ok. since this is perl and it deals with cgi i was hoping someone can

help
> > me out. I am working on a guest book and I get to the addguest part.

and
> > when i click on the submit button to add it to the cgi part it says it

can
> > not find my guestbook.cgi file. i have that file in my cgi-bin folder

what
> > is up
> > It may because i don't have a sendmail thing. what can you tell me and

am i
> > not adding something that needs to be there?

>
> There's no way I'm going to look through this massive amounts of code to
> find a possible error. However . . . .
>
> >
> > $guestbookurl = "http://www.yourhost.com/guestbook/guestbook.html";
> > $guestbookreal = "/home/yourhostt/guestbook/guestbook.html";

> ^^^^^
> Is that intentional? everywhere else, it says 'yourhost', but here it's
> 'yourhostt'. Is it possible that's the file it can't find?
>
> > $guestlog = "http://www.yourhost.com/guestbook/guestlog.html";
> > $cgiurl = "http://www.yourhost.com/guestbook/cgi-bin/guestbook.pl";

> ^^^^
>
> You said it can't find your guestbook.cgi file, but you're posting to
> a guestbook.pl file. Is this possibly the cause of your error?
>
> Paul Lalli
>
> <snipped a LOT of lines>
> > $guestbookreal = "/home/yourhostt/guestbook/guestbook.html";

> ^^^^^


No typo. thanks for noticing. that could be it. i going to look at that.
that could be it. Thanks a million.


 
Reply With Quote
 
Gunnar Hjalmarsson
Guest
Posts: n/a
 
      07-08-2004
pfancy wrote:
> I am working on a guest book ...


Are you? To me it appears as if you are just configuring Matt's
guestbook script. Even if it makes me nostalgic (modifying that script
was my first acquaintance with Perl), you'd better pick another
script, such as the guestbook script here, instead:

http://nms-cgi.sourceforge.net/scripts.shtml

> It may because i don't have a sendmail thing.


What would the "sendmail thing" have to do with a guestbook script?

--
Gunnar Hjalmarsson
Email: http://www.gunnar.cc/cgi-bin/contact.pl
 
Reply With Quote
 
pfancy
Guest
Posts: n/a
 
      07-08-2004

"Paul Lalli" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> On Thu, 8 Jul 2004, pfancy wrote:
>
> > Ok. since this is perl and it deals with cgi i was hoping someone can

help
> > me out. I am working on a guest book and I get to the addguest part.

and
> > when i click on the submit button to add it to the cgi part it says it

can
> > not find my guestbook.cgi file. i have that file in my cgi-bin folder

what
> > is up
> > It may because i don't have a sendmail thing. what can you tell me and

am i
> > not adding something that needs to be there?

>
> There's no way I'm going to look through this massive amounts of code to
> find a possible error. However . . . .
>
> >
> > $guestbookurl = "http://www.yourhost.com/guestbook/guestbook.html";
> > $guestbookreal = "/home/yourhostt/guestbook/guestbook.html";

> ^^^^^
> Is that intentional? everywhere else, it says 'yourhost', but here it's
> 'yourhostt'. Is it possible that's the file it can't find?
>
> > $guestlog = "http://www.yourhost.com/guestbook/guestlog.html";
> > $cgiurl = "http://www.yourhost.com/guestbook/cgi-bin/guestbook.pl";

> ^^^^
>
> You said it can't find your guestbook.cgi file, but you're posting to
> a guestbook.pl file. Is this possibly the cause of your error?
>
> Paul Lalli
> <snipped a LOT of lines>


I did look into that. i did notice i wrote guestbook.cgi i have been so
frustrated in trying to get it figured out. I'm sorry. i wrote the wrong
one done. i looked in to. i did mean .pl though. instead of .cgi. I'm sorr
for such a long code. but i did not know what else to do. but it gives me
the 404 error. I'm beginning to think that i have some code typed wrong
because it looks for the guestbook.pl file and says it can't find it, it
told me to set the chmod for 755 and i did. but it claims it can't find the
file but i have placed the guestbook.pl into the cgi bin.


 
Reply With Quote
 
pfancy
Guest
Posts: n/a
 
      07-08-2004

> I did look into that. i did notice i wrote guestbook.cgi i have been so
> frustrated in trying to get it figured out. I'm sorry. i wrote the

wrong
> one done. i looked in to. i did mean .pl though. instead of .cgi. I'm

sorr
> for such a long code. but i did not know what else to do. but it gives

me
> the 404 error. I'm beginning to think that i have some code typed wrong
> because it looks for the guestbook.pl file and says it can't find it, it
> told me to set the chmod for 755 and i did. but it claims it can't find

the
> file but i have placed the guestbook.pl into the cgi bin.



here is the link from where i found that guestbook at
http://www.scriptarchive.com/

>
>



 
Reply With Quote
 
pfancy
Guest
Posts: n/a
 
      07-08-2004

"pfancy" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
>
> > I did look into that. i did notice i wrote guestbook.cgi i have been so
> > frustrated in trying to get it figured out. I'm sorry. i wrote the

> wrong
> > one done. i looked in to. i did mean .pl though. instead of .cgi. I'm

> sorr
> > for such a long code. but i did not know what else to do. but it gives

> me
> > the 404 error. I'm beginning to think that i have some code typed wrong
> > because it looks for the guestbook.pl file and says it can't find it,

it
> > told me to set the chmod for 755 and i did. but it claims it can't find

> the
> > file but i have placed the guestbook.pl into the cgi bin.

>
>
> here is the link from where i found that guestbook at
> http://www.scriptarchive.com/
>
> >
> >

> the link you guys gave me. Unless my download program did not consider it

a different file it look like it is the same one i have. is there a place
where we can show what the program will look like?
>



 
Reply With Quote
 
Eric Schwartz
Guest
Posts: n/a
 
      07-08-2004
"pfancy" <(E-Mail Removed)> writes:
> I'm sorr for such a long code. but i did not know what else to do.
> but it gives me the 404 error.


What gives you which 404 error?

> I'm beginning to think that i have
> some code typed wrong because it looks for the guestbook.pl file and
> says it can't find it,


You have such a confusion of pronouns here, I can't even begin to
figure out what you're talking about. 'it' seems to mean at least
three things in that one sentence alone.

> it told me to set the chmod for 755 and i did. but it claims it
> can't find the file but i have placed the guestbook.pl into the cgi
> bin.


Fundamentally, you have three problems:

1) You're using Matt Wright's scripts, instead of the superior
replacements at http://nms-cgi.sourceforge.net/.

2) You're not good at partitioning problems-- that's not a crime, and
I'm not insulting you by saying it, but it's a skill you'll need to
develop. Partitioning a problem is where you figure out if the
problem is caused by the web server's set up, the script's logic,
or the script's configuration. In your case, I imagine it's a
mixture of the three, but because you don't seem to understand the
distinctions yourself, it's hard to say for sure.

3) You are either unfamiliar with your web host's configuration, or
your script's setup. If it's the first, then you need to talk to
your web hosting provider. If the second, you need to talk to
whoever supports your scripts.

This is another advantage of using the NMS scripts-- Matt no longer
supports his code, if he ever did, and there is a mailing list to
help you with problems running the NMS code.

-=Eric
--
Come to think of it, there are already a million monkeys on a million
typewriters, and Usenet is NOTHING like Shakespeare.
-- Blair Houghton.
 
Reply With Quote
 
pfancy
Guest
Posts: n/a
 
      07-08-2004

"Eric Schwartz" <(E-Mail Removed)> wrote in message
news:(E-Mail Removed)...
> "pfancy" <(E-Mail Removed)> writes:
> > I'm sorr for such a long code. but i did not know what else to do.
> > but it gives me the 404 error.

>
> What gives you which 404 error?
>
> > I'm beginning to think that i have
> > some code typed wrong because it looks for the guestbook.pl file and
> > says it can't find it,

>
> You have such a confusion of pronouns here, I can't even begin to
> figure out what you're talking about. 'it' seems to mean at least
> three things in that one sentence alone.
>
> > it told me to set the chmod for 755 and i did. but it claims it
> > can't find the file but i have placed the guestbook.pl into the cgi
> > bin.

>
> Fundamentally, you have three problems:
>
> 1) You're using Matt Wright's scripts, instead of the superior
> replacements at http://nms-cgi.sourceforge.net/.
>
> 2) You're not good at partitioning problems-- that's not a crime, and
> I'm not insulting you by saying it, but it's a skill you'll need to
> develop. Partitioning a problem is where you figure out if the
> problem is caused by the web server's set up, the script's logic,
> or the script's configuration. In your case, I imagine it's a
> mixture of the three, but because you don't seem to understand the
> distinctions yourself, it's hard to say for sure.
>
> 3) You are either unfamiliar with your web host's configuration, or
> your script's setup. If it's the first, then you need to talk to
> your web hosting provider. If the second, you need to talk to
> whoever supports your scripts.
>
> This is another advantage of using the NMS scripts-- Matt no longer
> supports his code, if he ever did, and there is a mailing list to
> help you with problems running the NMS code.
>
> -=Eric
> --
> Come to think of it, there are already a million monkeys on a million
> typewriters, and Usenet is NOTHING like Shakespeare.
> -- Blair Houghton.


Thats cool. I agree with you. I know there is a lot that i need to learn.
I have downloaded the script from the nms site. The guest book is the same
as the one i got but better right.


 
Reply With Quote
 
Jonathan Stowe
Guest
Posts: n/a
 
      07-09-2004
Gunnar Hjalmarsson <(E-Mail Removed)> wrote:
> pfancy wrote:
>> It may because i don't have a sendmail thing.

>
> What would the "sendmail thing" have to do with a guestbook script?
>


The 'guestbook' script (both the NMS and the original MSA one) have a
facility to send a message to someone when something was added to the
guestbook. I seem to recall the MSA one had the additional feature of
acting as an anonymous mail proxy for spammers.

/J\
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Recommendation for a small web framework like Perl's CGI::Applicationto run as CGI? excord80 Python 17 01-29-2009 06:02 PM
what's wrong calling a Perl/CGI script in Perl/CGI script under Tomcat server? kath Perl Misc 4 04-09-2007 09:21 PM
Python-cgi or Perl-cgi script doubt praba kar Python 1 07-30-2005 08:25 AM
perl/cgi exploit with bracketed module names passed in as CGI param shumsta Perl Misc 1 07-21-2005 11:30 PM
Re: CGI Perl "use CGI" statement fail Jürgen Exner Perl 0 07-31-2003 02:00 PM



Advertisments