Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

query on email message via dreamweaver mail form

Guest
May 28, 2009 May 28, 2009

Hello All,

First time I've done a mail form so not sure if this is what is supposed to happen. When an email is received via the mail form it has 'submit submit' at the bottom of the message and I'd like to get rid of it if poss.


The code is:

<div id="form"><form id="contactform" name="contactform" method="post" action="FormToEmail.php">
      <label>Your Name:<br />
<input name="name" type="text" id="name" />
<br />
</label>

  <br />
  <label>Your Email Address:<br />
<input name="email" type="text" id="email" />
  </label>
  <br />
  <br />
  <label>Your Message:<br />
<textarea name="message" cols="50" rows="10" id="message"></textarea>
  </label>
  <br />
  <br />
  <input type="submit" name="Submit" value="Submit" />


And the php is:


$errors = array();


// Remove $_COOKIE elements from $_REQUEST.


if(count($_COOKIE)){foreach(array_keys($_COOKIE) as $value){unset($_REQUEST[$value]);}}


// Check all fields for an email header.


function recursive_array_check_header($element_value)
{


global $set;


if(!is_array($element_value)){if(preg_match("/(%0A|%0D|\n+|\r+)(content-type:|to:|cc:|bcc:)/i",$element_value)){$set = 1;}}
else
{


foreach($element_value as $value){if($set){break;} recursive_array_check_header($value);}


}


}


recursive_array_check_header($_REQUEST);


if($set){$errors[] = "You cannot send an email header";}


unset($set);


// Validate email field.


if(isset($_REQUEST['email']) && !empty($_REQUEST['email']))
{


if(preg_match("/(%0A|%0D|\n+|\r+|:)/i",$_REQUEST['email'])){$errors[] = "Email address may not contain a new line or a colon";}


$_REQUEST['email'] = trim($_REQUEST['email']);


if(substr_count($_REQUEST['email'],"@") != 1 || stristr($_REQUEST['email']," ")){$errors[] = "Email address is invalid";}else{$exploded_email = explode("@",$_REQUEST['email']);if(empty($exploded_email[0]) || strlen($exploded_email[0]) > 64 || empty($exploded_email[1])){$errors[] = "Email address is invalid";}else{if(substr_count($exploded_email[1],".") == 0){$errors[] = "Email address is invalid";}else{$exploded_domain = explode(".",$exploded_email[1]);if(in_array("",$exploded_domain)){$errors[] = "Email address is invalid";}else{foreach($exploded_domain as $value){if(strlen($value) > 63 || !preg_match('/^[a-z0-9-]+$/i',$value)){$errors[] = "Email address is invalid"; break;}}}}}}


}


// Check referrer is from same site.


if(!(isset($_SERVER['HTTP_REFERER']) && !empty($_SERVER['HTTP_REFERER']) && stristr($_SERVER['HTTP_REFERER'],$_SERVER['HTTP_HOST']))){$errors[] = "You must enable referrer logging to use the form";}


// Check for a blank form.


function recursive_array_check_blank($element_value)
{


global $set;


if(!is_array($element_value)){if(!empty($element_value)){$set = 1;}}
else
{


foreach($element_value as $value){if($set){break;} recursive_array_check_blank($value);}


}


}


recursive_array_check_blank($_REQUEST);


if(!$set){$errors[] = "You cannot send a blank form";}


unset($set);


// Display any errors and exit if errors exist.


if(count($errors)){foreach($errors as $value){print "$value<br>";} exit;}


if(!defined("PHP_EOL")){define("PHP_EOL", strtoupper(substr(PHP_OS,0,3) == "WIN") ? "\r\n" : "\n");}


// Build message.


function build_message($request_input){if(!isset($message_output)){$message_output ="";}if(!is_array($request_input)){$message_output = $request_input;}else{foreach($request_input as $key => $value){if(!empty($value)){if(!is_numeric($key)){$message_output .= str_replace("_"," ",ucfirst($key)).": ".build_message($value).PHP_EOL.PHP_EOL;}else{$message_output .= build_message($value).", ";}}}}return rtrim($message_output,", ");}


$message = build_message($_REQUEST);


$message = $message . PHP_EOL.PHP_EOL."-- ".PHP_EOL."";


$message = stripslashes($message);


$subject = "TOP FLOOR WEBSITE ENQUIRY";


$headers = "From: " . $_REQUEST['email'];


mail($my_email,$subject,$message,$headers);


?>


Thanks alot in advance

TOPICS
Server side applications
958
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

Advisor , May 29, 2009 May 29, 2009

Oops. I warned you that I hadn't tested it. There was a missing closing parenthesis. But the condition I added was off anyway. I tested this one in an echo to the browser.

function build_message($request_input) {
  if(!isset($message_output)) {
    $message_output ="";
  }
  if(!is_array($request_input)) {
    $message_output = $request_input;
  }
  else{
    foreach($request_input as $key => $value) {
      if ('submit' != strtolower($key)) {
        if(!empty($value)) {
          if(!is_numeric($key)) {
  
...
Translate
Advisor ,
May 28, 2009 May 28, 2009

Wow. Not much defeats legibilty quite as well as avoiding line feeds and indention in recursive code! (and inserting multiple blank lines? Was that this online editor?)

Anyway, I did not test this, but try replacing your build_message function,

function build_message($request_input){if(!isset($message_output)){$message_output ="";}if(!is_array($request_input)){$message_output = $request_input;}else{foreach($request_input as $key => $value){if(!empty($value)){if(!is_numeric($key)){$message_output .= str_replace("_"," ",ucfirst($key)).": ".build_message($value).PHP_EOL.PHP_EOL;}else{$message_output .= build_message($value).", ";}}}}return rtrim($message_output,", ");}

With this:

function build_message($request_input) {
  if(!isset($message_output)) {
    $message_output ="";
  }
  if(!is_array($request_input)) {
    $message_output = $request_input;
  }
  else{
    foreach($request_input as $key => $value) {
      if(!empty($value)) {
        if(!is_numeric($key)) {
          $message_output .= str_replace("_"," ",ucfirst($key)).": ".build_message($value).PHP_EOL.PHP_EOL;
        }
        else {
          if ($key != strtolower('submit') {
            $message_output .= build_message($value).", ";
          }
        }
      }
    }
  }
  return rtrim($message_output,", ");
}

(Added condition for 'submit')

Also, I highly recommend replacing all those $_REQUEST with $_POST or $_GET, whichever is appropriate for your form.

--
Mark A. Boyd
Keep-On-Learnin' 🙂
If you are reading this via email, be aware that it may not be an accurate representation of my message. Login to read the actual message and/or to reply.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Guest
May 29, 2009 May 29, 2009

Hello Mark

Thank you very much for your answer. As I had no idea on how to do a contact from with code I just googled away until I came up with this and downloaded it!

Anyway, I have instigated the code you gave me but I am getting:

Parse error:  syntax error, unexpected '{' in /home/greenpat/public_html/topfloor/FormToEmail.php on line 118

As I mentioned, this is the first time I have done a mail form so I am completely in the dark on this and I very much

appreciate your help. Consequently, could you expand on :

Also, I highly recommend replacing all those $_REQUEST with $_POST or $_GET, whichever is appropriate for your form.

Thank you very much in advance

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advisor ,
May 29, 2009 May 29, 2009

Oops. I warned you that I hadn't tested it. There was a missing closing parenthesis. But the condition I added was off anyway. I tested this one in an echo to the browser.

function build_message($request_input) {
  if(!isset($message_output)) {
    $message_output ="";
  }
  if(!is_array($request_input)) {
    $message_output = $request_input;
  }
  else{
    foreach($request_input as $key => $value) {
      if ('submit' != strtolower($key)) {
        if(!empty($value)) {
          if(!is_numeric($key)) {
            $message_output .= str_replace("_"," ",ucfirst($key)).": ".build_message($value).PHP_EOL.PHP_EOL;
          }
          else {
            $message_output .= build_message($value).", ";
          }
        }
      }
    }
  }
  return rtrim($message_output,", ");
}

--
Mark A. Boyd
Keep-On-Learnin' 🙂
If you are reading this via email, be aware that it may not be an accurate representation of my message. Login to read the actual message and/or to reply.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advisor ,
May 29, 2009 May 29, 2009
LATEST

And to answer your other question, your form is using method="post", so it would be best to check the $_POST array. The $_REQUEST array contains data from several different places and it just makes sense to check for inputs where you expect them.

http://us2.php.net/manual/en/reserved.variables.request.php

http://us2.php.net/manual/en/reserved.variables.post.php

http://us2.php.net/manual/en/reserved.variables.get.php

--
Mark A. Boyd
Keep-On-Learnin' 🙂
If you are reading this via email, be aware that it may not be an accurate representation of my message. Login to read the actual message and/or to reply.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines