Help - Search - Members - Calendar
Full Version: Form deliver attached file to email recipient
Neowin Forums > *nix Customization & Support > Linux Server/BSD/Unix
slimgeo
Hello,

I created a form that collects data on a web page and delivers it to an email address. I want the form to deliver also attached file to the email address -- *not* to post the attached file on the related server site. Now, the form is working and but posting the attachment on the server.

Here is the code and I would appreciate your assistance:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Material Submission Form</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link href="style.css" rel="stylesheet" type="text/css">
<!-- calendar stuff -->
<link rel="stylesheet" type="text/css" href="calendar/calendar-blue2.css" />
<script type="text/javascript" src="calendar/calendar.js"></script>
<script type="text/javascript" src="calendar/calendar-en.js"></script>
<script type="text/javascript" src="calendar/calendar-setup.js"></script>
<!-- END calendar stuff -->
<!-- expand/collapse function -->
<script type=text/javascript>
<!--
function collapseElem(obj)
{
var el = document.getElementById(obj);
el.style.display = 'none';
}


function expandElem(obj)
{
var el = document.getElementById(obj);
el.style.display = '';
}


//-->
</SCRIPT>
<!-- expand/collapse function -->
<!-- expand/collapse function -->
<script type=text/javascript>
<!--

// collapse all elements, except the first one
function collapseAll()
{
var numFormPages = 1;

for(i=2; i <= numFormPages; i++)
{
currPageId = ('mainForm_' + i);
collapseElem(currPageId);
}
}


//-->
</SCRIPT>
<!-- expand/collapse function -->
<!-- validate -->
<script type=text/javascript>
<!--
function validateField(fieldId, fieldBoxId, fieldType, required)
{
fieldBox = document.getElementById(fieldBoxId);
fieldObj = document.getElementById(fieldId);

if(fieldType == 'text' || fieldType == 'textarea' || fieldType == 'password' || fieldType == 'file' || fieldType == 'phone' || fieldType == 'website')
{
if(required == 1 && fieldObj.value == '')
{
fieldObj.setAttribute("class","mainFormError");
fieldObj.setAttribute("className","mainFormError");
fieldObj.focus();
return false;
}

}


else if(fieldType == 'menu' || fieldType == 'country' || fieldType == 'state')
{
if(required == 1 && fieldObj.selectedIndex == 0)
{
fieldObj.setAttribute("class","mainFormError");
fieldObj.setAttribute("className","mainFormError");
fieldObj.focus();
return false;
}

}


else if(fieldType == 'email')
{
if((required == 1 && fieldObj.value=='') || (fieldObj.value!='' && !validate_email(fieldObj.value)))
{
fieldObj.setAttribute("class","mainFormError");
fieldObj.setAttribute("className","mainFormError");
fieldObj.focus();
return false;
}

}



}

function validate_email(emailStr)
{
apos=emailStr.indexOf("@");
dotpos=emailStr.lastIndexOf(".");

if (apos<1||dotpos-apos<2)
{
return false;
}
else
{
return true;
}
}


function validateDate(fieldId, fieldBoxId, fieldType, required, minDateStr, maxDateStr)
{
retValue = true;

fieldBox = document.getElementById(fieldBoxId);
fieldObj = document.getElementById(fieldId);
dateStr = fieldObj.value;


if(required == 0 && dateStr == '')
{
return true;
}


if(dateStr.charAt(2) != '/' || dateStr.charAt(5) != '/' || dateStr.length != 10)
{
retValue = false;
}

else // format's okay; check max, min
{
currDays = parseInt(dateStr.substr(0,2),10) + parseInt(dateStr.substr(3,2),10)*30 + parseInt(dateStr.substr(6,4),10)*365;
//alert(currDays);

if(maxDateStr != '')
{
maxDays = parseInt(maxDateStr.substr(0,2),10) + parseInt(maxDateStr.substr(3,2),10)*30 + parseInt(maxDateStr.substr(6,4),10)*365;
//alert(maxDays);
if(currDays > maxDays)
retValue = false;
}

if(minDateStr != '')
{
minDays = parseInt(minDateStr.substr(0,2),10) + parseInt(minDateStr.substr(3,2),10)*30 + parseInt(minDateStr.substr(6,4),10)*365;
//alert(minDays);
if(currDays < minDays)
retValue = false;
}
}

if(retValue == false)
{
fieldObj.setAttribute("class","mainFormError");
fieldObj.setAttribute("className","mainFormError");
fieldObj.focus();
return false;
}
}
//-->
</SCRIPT>
<!-- end validate -->
</head>
<body onLoad="collapseAll()">
<div id="mainForm">
<div id="formHeader">
<h2 class="formInfo">Material Submission Form</h2>
<p class="formInfo">Please use this form to submit materials. </p>
</div>
<BR/>
<!-- begin form -->
<form method=post enctype=multipart/form-data action=processor.php onSubmit="return validatePage1();">
<ul class=mainForm id="mainForm_1">
<li class="mainForm" id="fieldBox_1">
<label class="formFieldQuestion">Full name&nbsp;*</label>
<input class=mainForm type=text name=field_1 id=field_1 size='40' value=''>
</li>
<li class="mainForm" id="fieldBox_2">
<label class="formFieldQuestion">Email&nbsp;*</label>
<input class=mainForm type=email name=field_2 id=field_2 size=40 value="" style="background-image:url(imgs/email.png); background-repeat: no-repeat; padding: 2px 2px 2px 25px;">
</li>
<li class="mainForm" id="fieldBox_3">
<label class="formFieldQuestion">Organization&nbsp;*</label>
<input class=mainForm type=text name=field_3 id=field_3 size='40' value=''>
</li>
<li class="mainForm" id="fieldBox_4">
<label class="formFieldQuestion">Format</label>
<select class=mainForm name=field_4 id=field_4>
<option value=''></option>
<option value="HTML">HTML</option>
<option value="PDF">PDF</option>
<option value="Text">Text</option>
<option value="Graphic">Graphic</option>
<option value="Chart">Chart</option>
<option value="Audio">Audio</option>
<option value="Video">Video</option>
<option value="Other">Other</option>
</select>
</li>
<li class="mainForm" id="fieldBox_5">
<label class="formFieldQuestion">If other format(s), please specify</label>
<input class=mainForm type=text name=field_5 id=field_5 size='40' value=''>
</li>
<li class="mainForm" id="fieldBox_6">
<label class="formFieldQuestion">Language</label>
<select class=mainForm name=field_6 id=field_6>
<option value=''></option>
<option value="English">English</option>
<option value="French">French</option>
<option value="Spanish">Spanish</option>
<option value="Other">Other</option>
</select>
</li>
<li class="mainForm" id="fieldBox_7">
<label class="formFieldQuestion">If other language(s), please specify</label>
<input class=mainForm type=text name=field_7 id=field_7 size='40' value=''>
</li>
<li class="mainForm" id="fieldBox_8">
<label class="formFieldQuestion">Intended audience</label>
<span>
<input class=mainForm type=checkbox name=field_8[] id=field_8_option_1 value="Doctors" />
<label class=formFieldOption for="field_8_option_1">Doctors</label>
<input class=mainForm type=checkbox name=field_8[] id=field_8_option_2 value="Nurses" />
<label class=formFieldOption for="field_8_option_2">Nurses</label>
<input class=mainForm type=checkbox name=field_8[] id=field_8_option_3 value="Researchers" />
<label class=formFieldOption for="field_8_option_3">Researchers</label>
<input class=mainForm type=checkbox name=field_8[] id=field_8_option_4 value="Field workers" />
<label class=formFieldOption for="field_8_option_4">Field workers</label>
<input class=mainForm type=checkbox name=field_8[] id=field_8_option_5 value="Decision makers" />
<label class=formFieldOption for="field_8_option_5">Decision makers</label>
<input class=mainForm type=checkbox name=field_8[] id=field_8_option_6 value="Others" />
<label class=formFieldOption for="field_8_option_6">Others</label>
</span></li>
<li class="mainForm" id="fieldBox_9">
<label class="formFieldQuestion">Website URL&nbsp;*</label>
<input class=mainForm type=website name=field_9 id=field_9 size=40 value="" style="background-image:url(imgs/website.png); background-repeat: no-repeat; padding: 2px 2px 2px 25px;">
</li>
<li class="mainForm" id="fieldBox_10">
<label class="formFieldQuestion">Attach a file from your computer&nbsp;<a class=info href=#><img src=imgs/tip_small.png border=0><span class=infobox>Browse to a file on your computer and attach it to this form. </span></a></label>
<input class=mainForm type=file name=field_10 id=field_10 value=""><input name="submit" type="submit" value="Upload File">
</li>
<!-- end of this page -->
<!-- page validation -->
<script type=text/javascript>
<!--
function validatePage1()
{
retVal = true;
if (validateField('field_1','fieldBox_1','text',1) == false)
retVal=false;
if (validateField('field_2','fieldBox_2','email',1) == false)
retVal=false;
if (validateField('field_3','fieldBox_3','text',1) == false)
retVal=false;
if (validateField('field_4','fieldBox_4','menu',0) == false)
retVal=false;
if (validateField('field_5','fieldBox_5','text',0) == false)
retVal=false;
if (validateField('field_6','fieldBox_6','menu',0) == false)
retVal=false;
if (validateField('field_7','fieldBox_7','text',0) == false)
retVal=false;
if (validateField('field_8','fieldBox_8','checkbox',0) == false)
retVal=false;
if (validateField('field_9','fieldBox_9','website',1) == false)
retVal=false;
if (validateField('field_10','fieldBox_10','file',0) == false)
retVal=false;

if(retVal == false)
{
alert('Please correct the errors. Fields marked with an asterisk (*) are required');
return false;
}
return retVal;
}
//-->
</SCRIPT>
<!-- end page validaton -->
<!-- next page buttons -->
<li class="mainForm">
<label class="formFieldQuestion"> Type the following:&nbsp;<a class=info href=#><img src=imgs/tip_small.png border=0><span class=infobox>For security purposes, please type the letters in the image.</span></a><BR>
<img src="CaptchaSecurityImages.php" /> </label>
<input id="captchaForm" name="security_code" class="mainForm" type="text"/>
</li>
<li class="mainForm">
<input id="saveForm" class="mainForm" type="submit" value="Submit" />
</li>
</form>
<!-- end of form -->
<!-- close the display stuff for this page -->
</div>
</body>
</html>

-----------------------------
The form is processed by this process.php file:

<?php

$where_form_is="http://".$_SERVER['SERVER_NAME'].strrev(strstr(strrev($_SERVER['PHP_SELF']),"/"));

session_start();
if( ($_SESSION['security_code']==$_POST['security_code']) && (!empty($_POST['security_code'])) ) {
// Checkbox handling
$field_8_opts = $_POST['field_8'][0].",". $_POST['field_8'][1].",". $_POST['field_8'][2].",". $_POST['field_8'][3].",". $_POST['field_8'][4].",". $_POST['field_8'][5];

// File upload handling
if($_FILES['field_10']['name']!=''){
$field_10_filename = "file_10_".date("sihdmY").substr($_FILES['field_10']['name'],strlen($_FILES['field_10']['name'])-4);
if(!move_uploaded_file($_FILES['field_10']['tmp_name'], "./files/".$field_10_filename)){
die("File " . $_FILES['field_10']['name'] . " was not uploaded.");
}
}

mail("myname@company.com","Submission Data","Form data:

Full name: " . $_POST['field_1'] . "
Email: " . $_POST['field_2'] . "
Format: " . $_POST['field_3'] . "
If other format, please specify: " . $_POST['field_4'] . "
Organization: " . $_POST['field_5'] . "
Language: " . $_POST['field_6'] . "
If other language, please specify: " . $_POST['field_7'] . "
Intended audience: $field_8_opts
Website URL: " . $_POST['field_9'] . "
Attach a file: ".$where_form_is."files/".$field_10_filename." (original file name: " . $_FILES['field_10']['name'] . ")


powered by phpFormGenerator.
");

include("confirm.html");
}
else {
echo "We're sorry; you entered invalid text of the spam-protector image verification (Captcha) String. Please use the back button on your browser to return to the form and enter valid text. Thank you!";
}

?>

Thanks.
Slim
soffcore
Since no one said it..

This should be moved to a web programming section. This doesn't regard system administration.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2008 Invision Power Services, Inc.