PDA

View Full Version : My First PHP FORM(PROBLEM)



theYoungSociety
12-13-2008, 10:50 PM
#!/usr/bin/perl
# location of Perl (above) - check your doc or ask admin

##### SETTABLE VARIABLES ####################################

# URL to go to if there is a problem with form input
$ErrorPage = "http://www.yoursite.com/a_fail.html";

# URL to go to when form has been successfully submitted
$ThankPage = "http://www.yoursite.com/a_thanks.html";

# URL to go to if a 'foreign' referer calls the script
$EvilReferer = "http://www.somesite.com";

# E-mail address to send intake form to (your address)
# If not using PERL 5, escape the @ thus: \@ instead of @
$YourEmail = 'theYoungSociety@gmail.com';

# Script works only on your server(s) - ('theyoungsociety.000hosted.com','www.theyoungsociety.000hosted.com')
@referers = ('theyoungsociety.000hosted.com','www.theyoungsociety.000hosted.com');

# Location of mail program - check your doc or ask admin
$MailProgram = '/usr/lib/sendmail';

# Subject of the e-mail autoreply to the submitter
$Subject = "Thanks for Your Message!";

# Header line in the auto-reply message
$Header = "GOOBERS UNLIMITED";

# Brief tail message for body of e-mail autoreply
$TailMessage = "If your message requires a reply, we'll get back to you soon.";

# Your signature lines the end of the autoreply e-mail
$Signature1 = "John Q. Public";
$Signature2 = "www.YourSite.com";

##### END OF SETTABLE VARIABLES ############################



##### MAIN PROGRAM #########################################
# ___ Do not edit below this line __________________________

&CheckReferingURL;
&ReadParse;
$Name = $in{'Name'};
$Email = $in{'Email'};
$Message = $in{'Message'};
&CheckEmailAddressFormat;
&CheckFields;
&GetDate;
&SendSubmission;
&SendAutoReply;
print "Location: $ThankPage\n\n";
exit;

# _________________________________________________________

sub SendSubmission {
open (MAIL,"|$MailProgram -t");
print MAIL "To: $YourEmail\n";
print MAIL "From: $Email\n";
print MAIL "Subject: $Subject\n";
print MAIL "$Date\n\n";
print MAIL "E-Mail Message\n\n";
print MAIL "From: $Name\n";
print MAIL "Email: $Email\n\n";
print MAIL "Message:\n\n";
print MAIL "$Message\n\n";
close (MAIL);
}

# _________________________________________________________

sub SendAutoReply {
open (MAIL,"|$MailProgram -t");
print MAIL "To: $Email\n";
print MAIL "From: $YourEmail\n";
print MAIL "Subject: $Subject\n";
print MAIL "$Header\n";
print MAIL "$Date\n\n";
print MAIL "$Subject\n\n";
print MAIL "You sent the following:\n\n";
print MAIL "==============================\n\n";
print MAIL "Name: $Name\n";
print MAIL "Email: $Email\n\n";
print MAIL "Message:\n\n";
print MAIL "$Message\n\n";
print MAIL "==============================\n\n";
print MAIL "$TailMessage\n\n";
print MAIL "Best regards,\n\n\n";
print MAIL "$Signature1\n";
print MAIL "$Signature2\n\n";
close (MAIL);
}

# _________________________________________________________

sub GetDate {
@days = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
@months = ('01','02','03','04','05','06','07','08','09','10','11','12');
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year = $year+1900;
$Date = "$days[$wday] $months[$mon]/$mday/$year";
}

# _________________________________________________________

sub ReadParse { local (*in) = @_ if @_;
local ($i, $key, $val); if ( $ENV{'REQUEST_METHOD'} eq "GET" )
{$in = $ENV{'QUERY_STRING'};}
elsif ($ENV{'REQUEST_METHOD'} eq "POST")
{read(STDIN,$in,$ENV{'CONTENT_LENGTH'});}
else {
$in = ( grep( !/^-/, @ARGV )) [0];
$in =~ s/\\&/&/g; } @in = split(/&/,$in);
foreach $i (0 .. $#in) {
$in[$i] =~ s/\+/ /g;
($key, $val) = split(/=/,$in[$i],2);
$key =~ s/%(..)/pack("c",hex($1))/ge;
$val =~ s/%(..)/pack("c",hex($1))/ge;
$in{$key} .= "\0" if (defined($in{$key}));
$in{$key} .= $val; } return length($in); }

# _________________________________________________________

sub CheckEmailAddressFormat {
if (index($Email, "@") < 1) {&DoEmailError;}
if (index($Email, ".") < 1) {&DoEmailError;}
if (index($Email, " ") > -1) {&DoEmailError;}
}
sub CheckFields {
if (!$Name || $Name eq ' ') {&DoEmailError;}
if (!$Email || $Email eq ' ') {&DoEmailError;}
if (!$Message || $Message eq ' ') {&DoEmailError;}
}
sub DoEmailError {
print "Location: $ErrorPage\n\n";
exit;
}

# _________________________________________________________

sub CheckReferingURL {
if ($ENV{'HTTP_REFERER'}) {
foreach $referer (@referers) {
if ($ENV{'HTTP_REFERER'} =~ /$referer/i) {
$check_referer = '1';
last;
}}}
else {$check_referer = '1';}
if ($check_referer != 1) {
print "Location: $EvilReferer\n\n";
exit;
}}

# _________________________________________________________

exit;

##### End of Script ########################################

This Is The HTML Part of It:
<html>
<head>
<title>Send us an e-mail...</title>
</head>

<body>
<font size="5">Send us an e-mail...</font><font size="4"><br></font>
<form action="/AlphaMail.pl" method="POST">
<p><font size="4">Your Name (required):</font><br>
<input type="text" name="Name" size="50"></p>
<p><font size="4">Your E-mail (required):</font><br>
<input type="text" name="Email" size="50"></p>
<p><font size="4">Your message (required):</font><br>
<textarea rows="6" name="Message" cols="45"></textarea></p>
<p><input type="submit" value="Send" name="B1"> <input type="reset" value="Clear" name="B2"></p>
</form>
</body>
</html>


PROBLEM: Every time i press the send button it shows me my php code. And I do not receive anything to my email.

PappaJohn
12-14-2008, 12:40 AM
What you have posted is not php - it's Perl. They are two different languages.

FWDrew
12-14-2008, 03:08 AM
Would this:

#in) {

Have anything to do with the problem, looks commented out to me.

Drew

owt200x
12-14-2008, 08:02 AM
since i have no clue how to write in perl, you could always make a php form processing script.

also, is the file "AlphaMail.pl" in the same dir and the form script? because the way you have your form code
<form action="/AlphaMail.pl" method="POST"> it is going to the previous dir to run the script.


seriously though, dont use perl for form, php is much better and easier, imo