Member
From: Ballarat, Australia
Registered: 2005-03-27
Posts: 47
I've been thanked 0 times.
Offline
Hi guys,
I need to get a fast resolution on this so any help is greatly appreciated.
I've been trying to get a clients formmail working but i'm having problems...
I'm no php wiz, but I got it working on my site fine a while back, and i've just replicated what was needed on the clients site (changing the relevant info of course), but I still can't get it to operate...
It simply consists of the formail.php, the contact.htm and confirmation.htm pages.
Now the only code that needs changing (from what I use on my site) is the following - subbing in the actual domain info for the client. The rest of the php file I haven't touched, so i'm assuming it's ok.
formmail.php file code
Code: php
$recipient = "info@clientsdomain.com.au";
// if the redirect option is set: redirect them
$redirect = "http://www.clientsdomain.com.au/confirmation.htm";
// referers.. domains/ips that you will allow forms to reside on.
$referers = array('clientsdomain.com.au');
Contact page code
Code: php
<form method="post" enctype="multipart/form-data" action="formmail.php">
<input name="recipient" value="" type="hidden" /> <input name="MAX_FILE_SIZE" value="1000000" type="hidden" />
<input name="path_to_file" value="/html/" type="hidden" /> <input name="require" value="email, subject" type="hidden" />
<table>
<tbody>
<tr>
<td>
<span class="sectiontext">Your Email:</span><br />
<br />
</td>
<td>
<input name="email" type="text" /><br />
<br />
</td>
</tr>
<tr>
<td>
<span class="sectiontext">Subject:</span><br />
<br />
</td>
<td>
<input name="subject" type="text" /><br />
<br />
</td>
</tr>
<tr>
<td>
<span class="sectiontext">Message:</span><br />
<br />
</td>
<td>
<textarea name="Message" cols="40" rows="8">
</textarea>
</td>
</tr>
<tr>
<td colspan="2">
<center>
<input type="submit" /> <input type="reset" />
</center>
</td>
</tr>
</tbody>
</table>
</form>
When you fill out the contact form and click on 'submit' it just loads to the formail.php file in the next window (shows up blank etc), not the confirmation.htm file that it should. It doesn't bring up any errors at all.
What am I doing wrong, am I missing something blatantly obvious?
Member
From: Loughborough, United Kingdom
Registered: 2006-04-14
Posts: 805
I've been thanked 13 times.
Offline
Shaken wrote:
What am I doing wrong, am I missing something blatantly obvious?
You need to get the values from the form, subject, mail etc and send them through the mail() function.
Find your original file and find the line of php that is similar to mail($to,$from,$subject,$message);
NoSting Hosting - Brightside Hosting Ltd: Member of Nominet / eNom ETP
^^^ Now with over 400 free templates, ShoutCast, LAME + FFMPeg
Ringtones - Palace Marketing Ltd: D2C and B2B mobile content since 2002
Member
From: Ballarat, Australia
Registered: 2005-03-27
Posts: 47
I've been thanked 0 times.
Offline
I don't understand php very well... I never had to change anything more than the three lines it makes mention of at the top - why do I need to for this site? I'm puzzled.
Here's the full formmail.php file if its any help.
I've kept the domain in question as clientsdomain.com.au as I don't want the address known.
Code: php
<?
/*
##############################################################################
# PLEASE DO NOT REMOVE THIS HEADER!!!
#
# COPYRIGHT NOTICE
#
# FormMail.php v5.0
# Copyright 2000-2004 Ai Graphics and Joe Lumbroso (c) All rights reserved.
# Created 07/06/2000 Last Modified 10/28/2003
# Joseph Lumbroso, http://www.aigraphics.com, http://www.dtheatre.com
# http://www.dtheatre.com/scripts/
##############################################################################
#
# This cannot and will not be inforced but I would appreciate a link back
# to any of these sites:
# http://www.dtheatre.com
# http://www.aigraphics.com
# http://www.dtheatre.com/scripts/
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
# OTHER DEALINGS IN THE SOFTWARE.
#
##############################################################################
*/
/*
In most cases, only the first three lines need to be changed:
recipient: the email address to send a message to
(e.g. sales@domain.com.au)
redirect: the webpage to show the user - usually a "thank you
for your message" page
(e.g. http://www.domain.com.au/thankyou.html)
referers: please enter your domain name here without the www
(e.g. domain.com.au)
*/
// for ultimate security, use this instead of using the form
$recipient = "info@clientsdomain.com.au";
// if the redirect option is set: redirect them
$redirect = "http://www.clientsdomain.com.au/confirmation.htm";
// referers.. domains/ips that you will allow forms to reside on.
$referers = array('clientsdomain.com.au');
// bcc emails (separate multiples with commas (,))
$bcc = "";
// banned emails, these will be email addresses of people
// who are blocked from using the script (requested)
$banlist = array();
// field / value seperator
define("SEPARATOR", ($separator)?$separator:": ");
// content newline
define("NEWLINE", ($newline)?$newline:"\n");
// formmail version (for debugging mostly)
define("VERSION", "5.0");
// our mighty error function..
function print_error($reason,$type = 0) {
build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet);
// for missing required data
if ($type == "missing") {
if ($missing_field_redirect) {
header("Location: $missing_field_redirect?error=$reason");
exit;
} else {
?>
The form was not submitted for the following reasons:<p>
<ul><?
echo $reason."\n";
?></ul>
Please use your browser's back button to return to the form and try again.<?
}
} else { // every other error
?>
The form was not submitted because of the following reasons:<p>
<?
}
echo "<br><br>\n";
echo "<small>This form is powered by <a href=\"http://www.dtheatre.com/scripts/\">Jack's Formmail.php ".VERSION."/a></small>\n\n";
exit;
}
// function to check the banlist
// suggested by a whole lot of people.. Thanks
function check_banlist($banlist, $email) {
if (count($banlist)) {
$allow = true;
foreach($banlist as $banned) {
$temp = explode("@", $banned);
if ($temp[0] == "*") {
$temp2 = explode("@", $email);
if (trim(strtolower($temp2[1])) == trim(strtolower($temp[1])))
$allow = false;
} else {
if (trim(strtolower($email)) == trim(strtolower($banned)))
$allow = false;
}
}
}
if (!$allow) {
print_error("You are using from a <b>banned email address.</b>");
}
}
// function to check the referer for security reasons.
// contributed by some one who's name got lost.. Thanks
// goes out to him any way.
function check_referer($referers) {
if (count($referers)) {
$found = false;
$temp = explode("/",getenv("HTTP_REFERER"));
$referer = $temp[2];
if ($referer=="") {$referer = $_SERVER['HTTP_REFERER'];
list($remove,$stuff)=split('//',$referer,2);
list($home,$stuff)=split('/',$stuff,2);
$referer = $home;
}
for ($x=0; $x < count($referers); $x++) {
if (eregi ($referers[$x], $referer)) {
$found = true;
}
}
if ($referer =="")
$found = false;
if (!$found){
print_error("You are coming from an <b>unauthorized domain.</b>");
error_log("[FormMail.php] Illegal Referer. (".getenv("HTTP_REFERER").")", 0);
}
return $found;
} else {
return true; // not a good idea, if empty, it will allow it.
}
}
if ($referers)
check_referer($referers);
if ($banlist)
check_banlist($banlist, $email);
// This function takes the sorts, excludes certain keys and
// makes a pretty content string.
function parse_form($array, $sort = "") {
// build reserved keyword array
$reserved_keys[] = "MAX_FILE_SIZE";
$reserved_keys[] = "required";
$reserved_keys[] = "redirect";
$reserved_keys[] = "require";
$reserved_keys[] = "path_to_file";
$reserved_keys[] = "recipient";
$reserved_keys[] = "subject";
$reserved_keys[] = "sort";
$reserved_keys[] = "style_sheet";
$reserved_keys[] = "bgcolor";
$reserved_keys[] = "text_color";
$reserved_keys[] = "link_color";
$reserved_keys[] = "vlink_color";
$reserved_keys[] = "alink_color";
$reserved_keys[] = "title";
$reserved_keys[] = "missing_fields_redirect";
$reserved_keys[] = "env_report";
$reserved_keys[] = "submit";
if (count($array)) {
if (is_array($sort)) {
foreach ($sort as $field) {
$reserved_violation = 0;
for ($ri=0; $ri<count($reserved_keys); $ri++)
if ($array[$field] == $reserved_keys[$ri]) $reserved_violation = 1;
if ($reserved_violation != 1) {
if (is_array($array[$field])) {
for ($z=0;$zcount($array[$field]);$z++)
$content .= $field.SEPARATOR.$array[$field][$z].NEWLINE;
} else
$content .= $field.SEPARATOR.$array[$field].NEWLINE;
}
}
}
while (list($key, $val) = each($array)) {
$reserved_violation = 0;
/* for ($ri=0; $ricount($reserved_keys); $ri++)
if ($key == $reserved_keys[$ri]) $reserved_violation = 1;
for ($ri=0; $ricount($sort); $ri++)
if ($key == $sort[$ri]) $reserved_violation = 1;
*/
// prepare content
if ($reserved_violation != 1) {
if (is_array($val)) {
for ($z=0;$zcount($val);$z++)
$content .= $key.SEPARATOR.$val[$z].NEWLINE;
} else
$content .= $key.SEPARATOR.$val.NEWLINE;
}
}
}
return $content;
}
// mail the content we figure out in the following steps
function mail_it($content, $subject, $email, $recipient) {
global $attachment_chunk, $attachment_name, $attachment_type, $attachment_sent, $bcc;
$ob = "----=_OuterBoundary_000";
$ib = "----=_InnerBoundery_001";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "From: ".$email."\n";
$headers .= "To: ".$recipient."\n";
$headers .= "Reply-To: ".$email."\n";
if ($bcc) $headers .= "Bcc: ".$bcc."\n";
$headers .= "X-Priority: 1\n";
$headers .= "X-Mailer: DT Formmail".VERSION."\n";
$headers .= "Content-Type: multipart/mixed;\n\tboundary=\"".$ob."\"\n";
$message = "This is a multi-part message in MIME format.\n";
$message .= "\n--".$ob."\n";
$message .= "Content-Type: multipart/alternative;\n\tboundary=\"".$ib."\"\n\n";
$message .= "\n--".$ib."\n";
$message .= "Content-Type: text/plain;\n\tcharset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n\n";
$message .= $content."\n\n";
$message .= "\n--".$ib."--\n";
if ($attachment_name && !$attachment_sent) {
$message .= "\n--".$ob."\n";
$message .= "Content-Type: $attachment_type;\n\tname=\"".$attachment_name."\"\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "Content-Disposition: attachment;\n\tfilename=\"".$attachment_name."\"\n\n";
$message .= $attachment_chunk;
$message .= "\n\n";
$attachment_sent = 1;
}
$message .= "\n--".$ob."--\n";
mail($recipient, $subject, $message, $headers);
}
// take in the body building arguments and build the body tag for page display
function build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet) {
if ($style_sheet)
echo "<LINK rel=STYLESHEET href=\"$style_sheet\" Type=\"text/css\">\n";
if ($title)
echo "<title>$title</title>\n";
if (!$bgcolor)
$bgcolor = "#FFFFFF";
if (!$text_color)
$text_color = "#000000";
if (!$link_color)
$link_color = "#0000FF";
if (!$vlink_color)
$vlink_color = "#FF0000";
if (!$alink_color)
$alink_color = "#000088";
if ($background)
$background = "background=\"$background\"";
echo "<body bgcolor=\"$bgcolor\" text=\"$text_color\" link=\"$link_color\" vlink=\"$vlink_color\" alink=\"$alink_color\" $background>\n\n";
}
// check for a recipient email address and check the validity of it
// Thanks to Bradley miller (bradmiller@accesszone.com) for pointing
// out the need for multiple recipient checking and providing the code.
$recipient_in = split(',',$recipient);
for ($i=0;$i<count($recipient_in);$i++) {
$recipient_to_test = trim($recipient_in[$i]);
if (!eregi("^[_\\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\\.)+[a-z]{2,6}$", $recipient_to_test)) {
print_error("b>I NEED VALID RECIPIENT EMAIL ADDRESS ($recipient_to_test) TO CONTINUE</b>");
}
}
// This is because I originally had it require but too many people
// were used to Matt's Formmail.pl which used required instead.
if ($required)
$require = $required;
// handle the required fields
if ($require) {
// seperate at the commas
$require = ereg_replace( " +", "", $require);
$required = split(",",$require);
for ($i=0;$i<count($required);$i++) {
$string = trim($required[$i]);
// check if they exsist
if((!(${$string})) || (!(${$string}))) {
// if the missing_fields_redirect option is on: redirect them
if ($missing_fields_redirect) {
header ("Location: $missing_fields_redirect");
exit;
}
$require;
$missing_field_list .= "<b>Missing: $required[$i]</b><br>\n";
}
}
// send error to our mighty error function
if ($missing_field_list)
print_error($missing_field_list,"missing");
}
// check the email fields for validity
if (($email) || ($EMAIL)) {
$email = trim($email);
if ($EMAIL) $email = trim($EMAIL);
if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$", $email))
print_error("your b>email address</b> is invalid");
$EMAIL = $email;
}
// check zipcodes for validity
if (($ZIP_CODE) || ($zip_code)) {
$zip_code = trim($zip_code);
if ($ZIP_CODE) $zip_code = trim($ZIP_CODE);
if (!ereg("(^[0-9]{5})-([0-9]{4}$)", trim($zip_code)) && (!ereg("^[a-zA-Z][0-9][a-zA-Z][[:space:]][0-9][a-zA-Z][0-9]$", trim($zip_code))) && (!ereg("(^[0-9]{5})", trim($zip_code))))
print_error("your <b>zip/postal code</b> is invalid");
}
// check phone for validity
if (($PHONE_NO) || ($phone_no)) {
$phone_no = trim($phone_no);
if ($PHONE_NO) $phone_no = trim($PHONE_NO);
if (!ereg("(^(.*)[0-9]{3})(.*)([0-9]{3})(.*)([0-9]{4}$)", $phone_no))
print_error("your <b>phone number</b> is invalid");
}
// check phone for validity
if (($FAX_NO) || ($fax_no)) {
$fax_no = trim($fax_no);
if ($FAX_NO) $fax_no = trim($FAX_NO);
if (!ereg("(^(.*)[0-9]{3})(.*)([0-9]{3})(.*)([0-9]{4}$)", $fax_no))
print_error("your <b>fax number</b> is invalid");
}
// sort alphabetic or prepare an order
if ($sort == "alphabetic") {
uksort($HTTP_POST_VARS, "strnatcasecmp");
} elseif ((ereg('^order:.*,.*', $sort)) && ($list = explode(',', ereg_replace('^order:', '', $sort)))) {
$sort = $list;
}
// prepare the content
$content = parse_form($HTTP_POST_VARS, $sort);
// check for an attachment if there is a file upload it
if ($attachment_name) {
if ($attachment_size > 0) {
if (!$attachment_type) $attachment_type = "application/unknown";
$content .= "Attached File: ".$attachment_name."\n";
$fp = fopen($attachment, "r");
$attachment_chunk = fread($fp, filesize($attachment));
$attachment_chunk = base64_encode($attachment_chunk);
$attachment_chunk = chunk_split($attachment_chunk);
}
}
// check for a file if there is a file upload it
if ($file_name) {
if ($file_size > 0) {
if (!ereg("/$", $path_to_file))
$path_to_file = $path_to_file."/";
$location = $path_to_file.$file_name;
if (file_exists($path_to_file.$file_name))
$location = $path_to_file.rand(1000,3000).".".$file_name;
copy($file,$location);
unlink($file);
$content .= "Uploaded File: ".$location."\n";
}
}
// second file (see manual for instructions on how to add more.)
if ($file2_name) {
if ($file_size > 0) {
if (!ereg("/$", $path_to_file))
$path_to_file = $path_to_file."/";
$location = $path_to_file.$file2_name;
if (file_exists($path_to_file.$file2_name))
$location = $path_to_file.rand(1000,3000).".".$file2_name;
copy($file2,$location);
unlink($file2);
$content .= "Uploaded File: ".$location."\n";
}
}
// if the env_report option is on: get eviromental variables
if ($env_report) {
$env_report = ereg_replace( " +", "", $env_report);
$env_reports = split(",",$env_report);
$content .= "\n------ eviromental variables ------\n";
for ($i=0;$i<count($env_reports);$i++) {
$string = trim($env_reports[$i]);
if ($env_reports[$i] == "REMOTE_HOST")
$content .= "REMOTE HOST: ".$REMOTE_HOST."\n";
if ($env_reports[$i] == "REMOTE_USER")
$content .= "REMOTE USER: ". $REMOTE_USER."\n";
if ($env_reports[$i] == "REMOTE_ADDR")
$content .= "REMOTE ADDR: ". $REMOTE_ADDR."\n";
if ($env_reports[$i] == "HTTP_USER_AGENT")
$content .= "BROWSER: ". $HTTP_USER_AGENT."\n";
}
}
// send it off
mail_it(stripslashes($content), ($subject)?stripslashes($subject):"Form Submission", $email, $recipient);
if (file_exists($ar_file)) {
$fd = fopen($ar_file, "rb");
$ar_message = fread($fd, filesize($ar_file));
fclose($fd);
mail_it($ar_message, ($ar_subject)?stripslashes($ar_subject):"RE: Form Submission", ($ar_from)?$ar_from:$recipient, $email);
}
if ($redirect) {
header("Location: $redirect");
exit;
} else {
echo "Thank you for your submission\n";
echo "<br><br>\n";
echo "<small>This form is powered by <a href=\"http://www.dtheatre.com/scripts/\">Jack's Formmail.php ".VERSION."!</a></small>\n\n";
exit;
}
// <---------- THE END ----------> //
Member
From: Loughborough, United Kingdom
Registered: 2006-04-14
Posts: 805
I've been thanked 13 times.
Offline
so it doesn't work on your clients site and the same code works on your own site?
makes me think the client has a different setup, sounds daft but is php enabled? do they have mail enabled? (some skanky hosts wont permit it as it can be a problem with spammers)
if it is i'd get the new copy of the script and run it on your own site to see if it works, if one works and the other doesn't that's the source of the problem, if it doesn't work on your site and your original does i'd just re-copy the files over and start again to see if that sorts it.
there's a more recent version of that script available, you could also try that.
the mail function on it's own in php is dead simple to work with, might be a good starting point to get to grips with the language.
NoSting Hosting - Brightside Hosting Ltd: Member of Nominet / eNom ETP
^^^ Now with over 400 free templates, ShoutCast, LAME + FFMPeg
Ringtones - Palace Marketing Ltd: D2C and B2B mobile content since 2002
Member
From: Ballarat, Australia
Registered: 2005-03-27
Posts: 47
I've been thanked 0 times.
Offline
mobtex wrote:
so it doesn't work on your clients site and the same code works on your own site?
Yep - It's the exact same code alright (a copy and paste)
mobtex wrote:
makes me think the client has a different setup, sounds daft but is php enabled? do they have mail enabled? (some skanky hosts wont permit it as it can be a problem with spammers)
They are on the exact same host as I am and I have done the exact same process with them as I did with myself to get it to work for me. Mail is working fine by itself - i sent a test email from my account to theirs and then replied back...that's all working fine. It's the php side of things that is the issue, and I have no idea how to go about fixing it...
mobtex wrote:
if it is i'd get the new copy of the script and run it on your own site to see if it works, if one works and the other doesn't that's the source of the problem, if it doesn't work on your site and your original does i'd just re-copy the files over and start again to see if that sorts it.
there's a more recent version of that script available, you could also try that.
I'll give that a try and get back...
the mail function on it's own in php is dead simple to work with, might be a good starting point to get to grips with the language.
I stick to css and html... i like to keep it simple. This form is the only php I use..I don't have the brain power to code php.
Shaken -- there's alot of pre-written PHP MailForms already done ... take a look at these and see what works for you
Member
From: Ballarat, Australia
Registered: 2005-03-27
Posts: 47
I've been thanked 0 times.
Offline
travelagent wrote:
Shaken -- there's alot of pre-written PHP MailForms already done ... take a look at these and see what works for you
The one i'm using is in 2nd place. Jack's Formail.
Mobtex - with that new code, where is the area of code for setting the redirect page, I can't find it?
I'm just trying out the updated code with my site, and now i'm getting the same issue as my clients site...after submitting the form it loads the formail.php page...
- i'm guessing because of the redirect page omission?
I put back the original code that I was using 10 minutes ago and it works fine... a copy and past e of that code to my client's site doesn't though...
| Never |


