PDA

View Full Version : Got myself in a bit of a form pickle :(


becky gelke
04-02-2007, 04:36 AM
Hi guys. I do hope one of you can help me please. I am doing a site for a friend, that I have bought a template for, then adapted. I have just added the contact page, with a form to submit. I havent done one before, and cant seem to get it to work. I have configured the formmail correctly, but I think I havent done something to the form part of the page in DW. Forms are a bit of a mystery to me, I have to say. I want it to look exactly as it looks now.......but want it to work. Hope I have explained that correctly. Address for the page is here: http://www.razorblades.net.au/contactus.html
I realise there are other elements of the site that arent finished as yet, I am just waiting for the owner to look at the whole concept to see if he likes it, before I do any more, dont want to show it him yet though with a faulty form!!

Fantastic if anyone can help me........heres' hoping :)

edbr
04-02-2007, 05:06 AM
I cant see a form on that page.

You need a form with action set to your mail handler

becky gelke
04-02-2007, 05:54 AM
I cant see a form on that page.

You need a form with action set to your mail handler

I thought that was the form .........obviously not. If I have to put a form in there will that completely remove all of the boxes that are there already? is there perhaps a set of tags, or piece of code that I could add to make it all work, without having to replace what is already there, as that fits in really well with the rest of the site

Andromeda
04-02-2007, 06:09 AM
Hi Becky

I don't know anything about forms but there is a tutorial here which might help:
http://www.dreamweaverclub.com/dreamweaver-php-form.php

edbr
04-02-2007, 06:09 AM
you can insert a form and move the 'contact table into it.

<form name="form1" method="post" action="">

</form>

becky gelke
04-02-2007, 06:32 AM
you can insert a form and move the 'contact table into it.

<form name="form1" method="post" action="">

</form>

Thank you to both of you, I am getting a bit closer, I have got the correct tags around the form now, but when it is submitted, I am only getting a small amount of the info I have asked for.

e.g. I have just filled in each box, but what actually came through was this:

input: blah blah (I entered this into the text box part)
x: 20 (no idea what this is)
y: 0 (no idea what this is)

there should be five bits of info come through, and I am getting one, and two bits I dont understand. Thanks again guys, I will keep plodding on.

Andromeda
04-02-2007, 06:39 AM
Thanks again guys, I will keep plodding on.
It feels a bit like that sometimes doesn't it!!
Sorry I can't help any more - I might even learn something from this thread!!

edbr
04-02-2007, 07:11 AM
I would name each of the text fields so you recognise them , ie e-mail name, comments etc. I will try and have another look

becky gelke
04-02-2007, 09:02 AM
I would name each of the text fields so you recognise them , ie e-mail name, comments etc. I will try and have another look


Thanks again, I did do that, but nothing arrived back when I submitted the form, except the same message as above, so I changed te fields back to what they were. Still plodding on with it, been doing it all day, and have had enough to be honest.

edbr
04-02-2007, 09:42 AM
sorry it confused me too , perhaps someone can help you more.
in the meanwhile try this as a standard form and addd classes to uit maybe.


<form id="form1" name="form1" method="post" action="">
<table width="40%">
<tr>
<td width="13%">first name </td>
<td width="87%"><input name="f_name" type="text" id="f_name" /></td>
</tr>
<tr>
<td>last name</td>
<td><input name="ls_name" type="text" id="ls_name" /></td>
</tr>
<tr>
<td>E mail </td>
<td><input name="email" type="text" id="email" /></td>
</tr>
<tr>
<td>phone</td>
<td><input name="phone" type="text" id="phone" /></td>
</tr>
<tr>
<td>comment</td>
<td><textarea name="comment" rows="10" id="comment"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Submit" />
<input type="reset" name="Submit2" value="Reset" /></td>
</tr>
</table>
</form>

becky gelke
04-02-2007, 11:42 AM
sorry it confused me too , perhaps someone can help you more.
in the meanwhile try this as a standard form and addd classes to uit maybe.


<form id="form1" name="form1" method="post" action="">
<table width="40%">
<tr>
<td width="13%">first name </td>
<td width="87%"><input name="f_name" type="text" id="f_name" /></td>
</tr>
<tr>
<td>last name</td>
<td><input name="ls_name" type="text" id="ls_name" /></td>
</tr>
<tr>
<td>E mail </td>
<td><input name="email" type="text" id="email" /></td>
</tr>
<tr>
<td>phone</td>
<td><input name="phone" type="text" id="phone" /></td>
</tr>
<tr>
<td>comment</td>
<td><textarea name="comment" rows="10" id="comment"></textarea></td>
</tr>
<tr>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="Submit" />
<input type="reset" name="Submit2" value="Reset" /></td>
</tr>
</table>
</form>


Thanks for that, I will try it in the morning, its evening here in Australia. I am really hoping someone will be able to come up with the answer to why the form only sends me limited results, because I fear inserting this code will affect the 'look' of the page. Thanks again.

davidj
04-02-2007, 11:45 AM
make sure your fields are named the same as the $_POST vars in the script

becky gelke
04-02-2007, 02:21 PM
make sure your fields are named the same as the $_POST vars in the script

You have lost me now :( I am not sure where they are located. I read the tutorial and thought I had done it all right, but obviously not. I will relook at it all in the morning. Thanks for your help.

becky gelke
04-02-2007, 02:32 PM
OK, I have looked at what you suggested, and to be honest havent got a clue where I should be looking. I chose this formmail script because there were only three variables that need to be changed, the three at the top, as you will all know. If anyone could simply highlight the text that needs changing for me, I would be over the moon, then hopefully I can correct everything on my own from there!

This is the script. Apparantly too long for one post, so I will split it in two.
************************************************** *



<?
/*
################################################## ############################
# 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 = "design@avocadodesign.net"; // youremail@domain.com

// if the redirect option is set: redirect them
$redirect = "http://www.razorblades.net.au/thankyou.html";

// referers.. domains/ips that you will allow forms to reside on.
$referers = array('razorblades.net.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;
}

continued in next post.........................

becky gelke
04-02-2007, 02:33 PM
continued from above.......................



// 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 ----------> //

becky gelke
04-03-2007, 03:08 AM
make sure your fields are named the same as the $_POST vars in the script

THANK YOU DAVID. Followed your advice (with a clear head on a new day) and it worked a treat. You have helped me on many occasions, and I am extremely grateful. Thank you to everyone else who offered excellent advice.......problem solved. :)