I've written a katrillion forms before.

I cannot for the life of me figure out why this one isn't sending a confirmation e-mail.

Can someone please! Please help me before I lose my mind?

<?php
// In PHP versions earlier than 4.1.0, $HTTP_POST_FILES should be used instead
// of $_FILES.

$mailto = "email@scrink.com" ;
$subject = "CANR Communication Request Form" ;
$errorurl = "http://ag.udel.edu/test/christy/commForm/error.html" ;
$thankyouurl = "http://ag.udel.edu/test/christy/commForm/thankyou.html" ;

$headersep = (!isset( $uself ) || ($uself == 0)) ? "\r\n" : "\n" ;
$name = $_POST['name'] ;
$email = $_POST['email'] ;
$department = $_POST['department'] ;
$phone = $_POST['phone'] ;
$accountcode = $_POST['accountcode'] ;
$projectname = $_POST['projectname'] ;
$completiondate = $_POST['completiondate'] ;
$approver = $_POST['approver'];
$writing_request = $_POST['writing_request'] ;
$writing_other = $_POST['writing_other'] ;
$graphic_design = $_POST['graphic_design'] ;
$photography = $_POST['photography'] ;
$photography_other = $_POST['photography_other'] ;
$format = $_POST['format'] ;
$website = $_POST['website'] ;
$website_other = $_POST['website_other'] ;
$more_description = $_POST['more_description'] ;

$http_referrer = "http://ag.udel.edu/test/christy/commForm/form.html" ;

//$target_path = "uploads/";

// Where the file is going to be placed 
$target_path = 'D:/websites/anrwebsite/test/christy/commForm/'.$_FILES['uploadfile']['name'];

//******                        PROCESSING BEGINS HERE
if($_SERVER['REQUEST_METHOD'] == "GET") {
  print "<br><strong>TERMINATED</strong><br>";
  exit;
}

$uploadfile = $_POST['uploadfile'];
// start for loop
for($x=0;$x<$uploadfile;$x++){
$file_name = $_FILES['uploadfile'. $x]['name'];
// strip file_name of slashes
$file_name = stripslashes($file_name);
$file_name = str_replace("'","",$file_name);
$copy = copy($_FILES['uploadfile'. $x]['tmp_name'], $target_path);
 // check if successfully copied
 if($copy){
 echo "$file_name | uploaded sucessfully!<br>";
 }else{
 echo "$file_name | could not be uploaded!<br>";
 }
} // end of loop
	
if(eregi("\r", $subject)) die("<B>Error Exit</B> Possible Spam Bot attack. Carriage return not allowed in subject");
if(eregi("\n", $subject)) die("<B>Error Exit</B> Possible Spam Bot attack. Line feed not allowed in subject");
if(eregi("\r", $email)) die("<B>Error Exit</B> Possible Spam Bot attack. Carriage return not allowed in header");
if(eregi("\n", $email)) die("<B>Error Exit</B> Possible Spam Bot attack. Line feed not allowed in header");
if(eregi("\r", $name)) die("<B>Error Exit</B> Possible Spam Bot attack. Carriage return not allowed in header");
if(eregi("\n", $name)) die("<B>Error Exit</B> Possible Spam Bot attack. Line feed not allowed in header");

// 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 || substr_count($exploded_email[1],".") > 3){$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 $key => $value){if($key == 0){if(strlen($value) > 63 || !preg_match('/^[a-z0-9-]+$/i',$value)){$errors[] = "Email address is invalid"; break;}}elseif(strlen($value) > 6 || !preg_match('/^[a-z0-9]+$/i',$value)){$errors[] = "Email address is invalid"; break;}}}}}}

}

$messageproper =

	"This message was sent from:\n" .
	"$http_referrer\n" .
	"------------------------------------------------------------\n" .
	"Name of sender: $name\n" .
	"Email of sender: $email\n" .
    "Department: $department\n" .
	"Phone: $phone\n" .
	"Account code: $accountcode\n" .
	"Project name: $projectname\n" .
	"CompletionDate: $completiondate\n" .
	"Final approver of project: $approver\n" .
	"What type of writing request, if any: $writing_request\n" .
	"Is there a different writing request you need: $writing_other\n" .
	"What type of graphic design request, if any: $graphic_design\n" .
	"What type of photography, if any: $photography\n" .
	"Is there a different photography request you need: $photograhy_other\n" .
	"What photo format would you like: $format\n" .
	"What type of website work do you need: $website" .
	"Is there a different website request you need: $website_other\n" .
	"If necessary, please provide a more details description: $more_description\n" .
	
	"\n\n------------------------------------------------------------\n" ;
	"Filename: ".$_FILES['uploadfile']['name'];

mail($mailto, $subject, $messageproper,	"From: \"$name\" <$email>" . $headersep . "Reply-To: \"$name\" <$email>" . $headersep . "X-Mailer: chfeedback.php 2.07" );
header( "Location: $thankyouurl" );
exit ;

?>

Why am I not surprised?

First of all why don't you indent your code properly so you can actually read it.

Yours

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 || substr_count($exploded_email[1],".") > 3){$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 $key => $value){if($key == 0){if(strlen($value) > 63 || !preg_match('/^[a-z0-9-]+$/i',$value)){$errors[] = "Email address is invalid"; break;}}elseif(strlen($value) > 6 || !preg_match('/^[a-z0-9]+$/i',$value)){$errors[] = "Email address is invalid"; break;}}}}}}

}

mine

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 || substr_count ( $exploded_email[1], "." ) > 3 )
      {
        $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 $key = > $value )
          {
            if ( $key == 0 )
            {
              if ( strlen ( $value ) > 63 || !preg_match ( '/^[a-z0-9-]+$/i', $value ) )
              {
                $errors[] = "Email address is invalid";
                break;
              }
            }
            elseif ( strlen ( $value ) > 6 || !preg_match ( '/^[a-z0-9]+$/i', $value ) )
            {
              $errors[] = "Email address is invalid";
              break;
            }
          }
        }
      }
    }
  }

The next step would be to go through each section individually and test if it works. If it doesn't, then break the section into smaller more managable pieces to test...etc.

This article has been dead for over six months. Start a new discussion instead.