CodingForums.com

CodingForums.com (http://www.codingforums.com/index.php)
-   Perl/ CGI (http://www.codingforums.com/forumdisplay.php?f=5)
-   -   Resolved script works with -w switch but not without (http://www.codingforums.com/showthread.php?t=229116)

rotezecke 06-11-2011 01:46 AM

script works with -w switch but not without
 
this script works on localhost with the -w switch but not without. it also works when use strict and use warning are active.

apache2/error.log:

without switch (aborted script):
(2)No such file or directory: exec of ... failed

with the switch i get:
Use of uninitialized value $email_flag in string ne ...

which looks initialised to me.

on the life web server neither one works. perl is new to me, but i know some BASH and PHP.

i run debian lenny, apache2, perl 5.10.

Code:

#!/usr/bin/perl -w

#works with the next two lines enabled
#use strict;
#use warnings;

##clear output
$| = 1;

# Define these bits
my $mailprog = '/usr/sbin/sendmail'; # where the mail program lives
# $webpage  = '/'; # default web page to return to .. hidden in form element webpage
my $to = "not\@for.you";  # where the mail is sent

my ($command,$email,@pairs,$buffer,$pair,$email_flag) ;

##!! print "Content-Type: text/html\n\n";

# get the data from the form
 read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});

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

        # Split the pair up into individual variables.                      #
        my($name, $value) = split(/=/, $pair);
 
        # Decode the form encoding on the name and value variables.          #
        $name =~ tr/+/ /;
        $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

        $value =~ tr/+/ /;
        $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;

        # If they try to include server side includes, erase them, so they
        # aren't a security risk if the html gets returned.  Another
        # security hole plugged up.
        $value =~ s/<!--(.|\n)*-->//g;

    ##  print "Name of form element is $name with value of $value \n";
     
        if ($name eq 'email') {
            $email = $value;
          }
       
        if ($name eq 'command') {
            $command = $value;
          }

      }
# end of extracting variables from form


# Do a little email checking
    if ($email =~ /(@.*@)|(\.\.)|(@\.)|(\.@)|(^\.)/ ||
        $email !~ /^.+\@(\[?)[a-zA-Z0-9\-\.]+\.([a-zA-Z]{2,3}|[0-9]{1,3})(\]?)$/ ) {
        $email_flag = "ERROR";
#        $why_error = "Email";
    }

my $urlcommand = $command;
## Do a little command checking

if ($command eq 'Subscribe') {
$command = "SUBSCRIBE rpc-news";
}

if ($command eq 'Unsubscribe') {
$command = "UNSUBSCRIBE rpc-news";
}

if ($command eq 'Suspend') {
$command = "SET rpc-news NOMAIL";
}

if ($command eq 'Resume') {
$command = "SET rpc-news MAIL";
}

my $getInfo = '';
## Start page output
print "Content-Type: text/html\n";

 # only mail if email address is ok
  if ($email_flag ne "ERROR") {
    # Open The Mail Program
    open(MAIL,"|$mailprog -t");
    print MAIL "To: $to\n";
    print MAIL "From: $email\n";
    print MAIL "Subject: [rpc-news] $command \n";
    print MAIL "Reply-to: $email \n";
 #    print "X-RemoteIPaddress: $ENV{'REMOTE_ADDR'} \n";
    print MAIL "$command \n";
    print MAIL "EXIT \n";
    close (MAIL);

        # email is valid
        $getInfo = "?result=good";
  }
if ($email_flag eq "ERROR") {
        $getInfo = "?result=bad";

   
## redirect to cms page

my $rootURL= $ENV{'SERVER_NAME'};
my $url = "http://${rootURL}/thank_you.html${getInfo}&action=${urlcommand}";

print "Location: $url\n\n";


rotezecke 06-11-2011 08:34 AM

http://www.perlmonks.org/?node_id=356519

windows line endings on unix servers. who would have thought ...


All times are GMT +1. The time now is 10:11 PM.

Powered by vBulletin®
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.