De meeste weten wel hoe ze een website kunnen maken maar dan is het vaak wel handig om er een contact formulier bij te hebben.
Deze heb ik voor jullie gemaakt en mogen jullie zelf aanpassen voor eigen gebruik.
Mochten er vragen over zijn dan kunnen we je altijd helpen om een oplossing te geven voor het probleem
Voor dit contact formulier moet je wel beschikken over php bij de webhost dus bij telenet en degelijke zal dit contact formulier niet werken.
Er was een verzoek van 1 van de leden hoe ze een bestand in een contact formulier konden meesturen aan aanleding van dat bericht heb ik er aangepaste versie gemaakt van het contact formulier met file upload.
Mochten er vragen zijn dan horen we dat graag.
Deze heb ik voor jullie gemaakt en mogen jullie zelf aanpassen voor eigen gebruik.
Mochten er vragen over zijn dan kunnen we je altijd helpen om een oplossing te geven voor het probleem
Voor dit contact formulier moet je wel beschikken over php bij de webhost dus bij telenet en degelijke zal dit contact formulier niet werken.
Er was een verzoek van 1 van de leden hoe ze een bestand in een contact formulier konden meesturen aan aanleding van dat bericht heb ik er aangepaste versie gemaakt van het contact formulier met file upload.
PHP:
<?php
/**
* what: Contact form white file upload
* What: Actions submit en controle and file upload
* @Auhor: Buttelflyice
* Date : 12-02-2012
* Don't remove this !!
*/
// Welke types wil je ontvangen
$types = array("zip", "rar", "txt", "doc", "jpg", "png", "gif", "odt", "xml");
// Je emailadres.
$emailAdres = "info@dowekido.nl";
// Welke prioriteit stel je aan de mail? 1 (Highest), 2 (High), 3 (Normal), 4 (Low), 5 (Lowest).
$priority = "3";
//Hoeveel bijlage moeten ze meesturen
$attachmentTotal = "2";
// File grote in kb
// 2048kb = 2MB, 1024kb = 1MB, 512kb = 1/2MB etc..
$maxFileSize = "1024";
// Total bijlage grote
// 2048kb = 2MB, 1024kb = 1MB, 512kb = 1/2MB etc..
$maxFileTotal = "2048";
// Standaard tekst indien niets is ingevuld
$defaultSubject = "Email van uit website";
// Bedankt bericht
$thanxMessage = "Bedankt voor uw bericht";
/*
//================================================================================
// ! Belanrijk hier onder niets aanpassen !
//================================================================================
*/
// Function om de extentie op te halen.
function getExt($key) {
$key = strtolower(substr(strrchr($key, "."), 1));
$key = str_replace("jpeg", "jpg", $key);
return $key;
}
// Function voor de bijlage in de mail toe te voegen
function mailAttachment($file, $name, $boundary) {
$fp = fopen($file, "r");
$str = fread($fp, filesize($file));
$str = chunk_split(base64_encode($str));
$message = "--".$boundary."\n";
$message .= "Content-Type: application/octet-stream; name=\"". $name ."\"\n";
$message .= "Content-disposition: attachment; filename=\"". $name ."\"\n";
$message .= "Content-Transfer-Encoding: base64\n";
$message .= "\n";
$message .= "$str\n";
$message .= "\n";
return $message;
}
// Beveiling voor zinloze teksten
function cleanMsg($key) {
$key = str_replace("\r", "", $key);
$key = str_replace("\n", "", $key);
$find = array(
"/bcc\:/i",
"/Content\-Type\:/i",
"/Mime\-Type\:/i",
"/cc\:/i",
"/to\:/i"
);
$key = preg_replace($find, "", $key);
return $key;
}
// Variable zetten
$error = "";
$sentMail = false;
// When the form is submitted
if($_POST['submit'] == true ) {
extract($_POST, EXTR_SKIP);
// Controler het forumlier op fouten
if(trim($yourName) == "") {
$error .= "You did not enter your name!<br />";
}
if(trim($yourEmail) == "") {
$error.="You did not enter your email!<br />";
} elseif(!preg_match("/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/", $yourEmail)) {
$error .= "Invalid email address.<br />";
}
if(trim($emailSubject) == "") {
$emailSubject = $defaultSubject;
}
if(trim($yourMessage) == "") {
$error .= "You did not enter a message!<br />";
}
// Contoleer de bijlage
if($attachmentTotal > 0) {
// Contoleer de totale bijlage in file grote
if((array_sum($_FILES['attachment']['size'])) > ($maxFileTotal * 1024)) {
$error .= "The max size allowed for all your files is ".$maxFileTotal."kb<br />";
} else {
//Controleer elke file
for($i = 0; $i <= $attachmentTotal-1; $i++) {
if($_FILES['attachment']['name'][$i]) {
//Controler of het file type mag.
if(!in_array(getExt($_FILES['attachment']['name'][$i]), $types)) {
$error.= "Invalid file type for your file: ".$_FILES['attachment']['name'][$i]."<br />";
//Contoleer de file grote
} elseif(($_FILES['attachment']['size'][$i]) > ($maxFileSize * 1024)) {
$error.= "Your file: ".$_FILES['attachment']['name'][$i]." is to big.<br />";
} // if in_array
} // if Files
} // For
} // else array_sum($_FILES['attachment']['size'])
} // if attachmentTotal
if($error) {
$displayMessage = $error;
} else {
$boundary =md5(uniqid(time()));
//Headers
$headers = "Return-Path: <".cleanMsg($yourEmail).">\n";
$headers .= "From: ".cleanMsg($yourName)." <".cleanMsg($yourEmail).">\n";
$headers .= "X-Mailer: PHP/".phpversion()."\n";
$headers .= "X-Sender: ".$_SERVER['REMOTE_ADDR']."\n";
$headers .= "X-Priority: ".$priority."\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"\n";
$headers .= "This is a multi-part message in MIME format.\n";
//Bericht
$message = "--".$boundary."\n";
$message .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: quoted-printable\n";
$message .= "\n";
$message .= cleanMsg(nl2br(strip_tags($yourMessage)));
$message .= "\n";
//Voeg bijlages toe aan bericht
if($attachmentTotal > 0) {
for($i = 0; $i <= $attachmentTotal-1; $i++) {
if($_FILES['attachment']['tmp_name'][$i]) {
$message .= mailAttachment($_FILES['attachment']['tmp_name'][$i], $_FILES['attachment']['name'][$i], $boundary);
} //if $_FILES['attachment']['name'][$i]
} //for
} // if
// Einde bericht
$message .= "--".$boundary."--\n";
// Verstuur het complete bericht
if(!mail($emailAdres, cleanMsg($emailSubject), $message, $headers)) {
Exit("An error has occured, please report this to the website administrator.\n");
} else {
$sentMail = true;
}
} // else
} // $_POST
/*
//================================================================================
// Start the form layout
//================================================================================
*/
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Language" content="en-us" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Contact form</title>
<style type="text/css">
body {
background-color:#FFFFFF;
font-family: Verdana, Arial, sans-serif;
font-size: 11pt;
color: #000000;
}
a , a:link , a:visited , a:hover {
text-decoration:none;
color: #000000;
}
.table {
border-collapse:collapse;
border:1px solid #000000;
width:500px;
}
.tableheader{
background-color:#eee;
font-weight:bold;
color: #FFFFFF;
text-align:center;
padding:2px;
}
.attachinfo , .tablebody , .tablefooter , tableheader {
border:1px solid #070707;
background-color:#eee;
font-size: 8pt;
padding:4px;
}
.tablebody{
font-size: 10pt;
padding:2px;
}
.tablefooter{
text-align:center;
padding:2px;
}
input,select,textarea {
font-size: 10pt;
background-color:#ccc;
border:1px solid #000000;
}
form{
padding:0px;
margin:0px;
}
.errormessage{
color: #FF0000;
}
.thanksmessage{
color: #000000;
}
</style>
<script type="text/javascript">
var error = "";
e_regex = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,})+$/;
function Checkit(theform) {
if(theform.yourName.value=="") {
error+="Je heb je naam niet ingevuld\n";
}
if(theform.yourEmail.value=="") {
error+="Je heb geen email in gevuld\n";
} else if(!e_regex.test(theform.yourEmail.value)) {
error+="Het is geen geldig email\n";
}
if(theform.yourMessage.value=="") {
error+="Je bent vergeten een bericht in te vullen\n";
}
if(error) {
alert('**Het formulier geeft de volgende fouten terug:**\n\n' + error);
error = "";
return false;
} else {
return true;
}
}
</script>
</head>
<body>
<?php if($displayMessage) {?>
<div align="center" class="errormessage"><b><?php $displayMessage;?></b></div>
<br />
<?php }?>
<?php if($sentMail != true) {?>
<form method="post" action="contact.php" enctype="multipart/form-data" name="phmailer" onsubmit="return Checkit(this);">
<table align="center" class="table">
<?php if($attachmentTotal > 0) {?>
<tr>
<td width="100%" class="attachinfo" colspan="2">
<b>Toegestane file types:</b> <?php echo implode($types, ", ");?><br />
<b>Max grote per file:</b> <?php echo $maxFileSize ?>kb.<br />
<b>Max totale grote van de bijlages:</b> <?php echo $maxFileTotal ?>kb.
</td>
</tr>
<?php } ?>
<tr>
<td width="30%" class="tablebody">Naam:</td>
<td width="70%" class="tablebody"><input name="yourName" type="text" size="30" value="" /><span class="errormessage">*</span></td>
</tr>
<tr>
<td width="30%" class="tablebody">Email:</td>
<td width="70%" class="tablebody"><input name="yourEmail" type="text" size="30" value="" /><span class="errormessage">*</span></td>
</tr>
<tr>
<td width="30%" class="tablebody">Onderwerp:</td>
<td width="70%" class="tablebody"><input name="emailSubject" type="text" size="30" value="" /></td>
</tr>
<?php for($i = 1;$i <= $attachmentTotal; $i++) { ?>
<tr>
<td width="30%" class="tablebody">Bijlage:</td>
<td width="70%" class="tablebody"><input name="attachment[]" type="file" size="30" /></td>
</tr>
<?php } ?>
<tr>
<td colspan="2" width="100%" class="tablebody">Bericht:<span class="errormessage">*</span><br />
<div align="center">
<textarea name="yourMessage" rows="8" cols="60"></textarea>
</div>
</td>
</tr>
<tr>
<td colspan="2" width="100%" class="tablefooter">
<input type="hidden" name="submit" value="true" />
<input type="submit" value="Verzenden" />
<input type="reset" value="reset" />
</td>
</tr>
</table>
</form>
<?php }
if($sentMail == true) {
echo $thanxMessage;
}
?>
Mochten er vragen zijn dan horen we dat graag.