<?php
error_reporting(E_ALL);
session_start();
class SimpelMail {

var $aAan = array(
	array('Piet Jansen','piet@jansen.ext'),
	array('Jan Pietersen','jan@piet.ext')
	);
	/* Een lijstje met personen waar je naartoe kan sturen. Dat kan natuurlijk ook gewoon 1 persoon zijn, dan gooi je de 2e array gewoon weg en dan komt het allemaal goed */

var $aVelden = array(
	// Velden die er in moeten komen: 
	// naam || verplicht (1=ja, 0=nee) || 0=text,1=textarea
	array('Onderwerp',1,0), // LET OP, ONDERWERP MOET ER ALTIJD IN, oP NR 0!!!!! (dus gewoon laten staan)
	array('Naam',1,0), // LET OP OOK LATEN STAAN!
	array('E-mailadres',1,0),
	
	// vanaf hier costum fields toevoegen! //

	array('Website',0,0),
	// tot hier
	
	array('Bericht',1,1)
	);

var $sPrefix = '[form]: '; // wat er standaard voor het onderwerp moet komen te staan (kun je dus ook leeglaten)
var $iSpam = 300; // stukje beveiliging dat je neit elke 1 seconde mail krijgt van dezelfde personen. Dit is in seconden.
var $sPage; // alleen veranderen als je pagina iets is zoals ?pagina=contact
var $bIsGelukt;

function Formulier() {
	?>
	<h1>Contact</h1>
	<form method="post" action="<?= $this->sPage; ?>">
	<table>
		<?php
		if(count($this->aAan) > 1)
			{ 
			?><tr><td>Aan:</td><td><select name="iAan"><?php
			foreach($this->aAan as $iNr => $aData)
				{ echo '<option value="'.$iNr.'">'.$aData[0].'</option>'; }
			?></select></td></tr><?php
			}
		foreach($this->aVelden as $iKey=>$aValue) {
			$sVal = (isset($_POST[$iKey])) ? htmlspecialchars($_POST[$iKey]) : '';
			?><tr><td><?= $aValue[0]; ?>:</td><td><?php
			if($aValue[2]==1) {
				echo '<textarea name="'.$iKey.'" cols="60" rows="8">'.$sVal.'</textarea>';
				}
			else {
				echo '<input type="text" name="'.$iKey.'" value="'.$sVal.'" />';
				}
			?></td></tr>
			<?php
			}
		?>
		<tr><td colspan="2"><input type="submit" value="Verzenden" /></td></tr>
	</table>
	</form>
	<?php
	}

function Mailen() {
	$aErr = array();
	
	if(isset($_SESSION['iSpam']) && $_SESSION['iSpam'] > time())
		{ $aErr[] = 'Om spam tegen te gaan kunt u slechts 1 maal e-mailen in '.$this->iSpam.' seconden.'; }
	
	foreach($this->aVelden as $iKey => $aVeld) {
		if($this->aVelden[$iKey][1]==1) {
			if(strlen(trim($_POST[$iKey])) == 0)
				{ $aErr[] = 'Je bent het veld '.$aVeld[0].' vergeten.'; }
			}
		}
		
	if(count($aErr)>0) {
		echo 'Het volgende ging fout:<ul>';
		foreach($aErr as $sFout)
			{ echo '<li>'.$sFout.'</li>'; }
		echo '</ul>';
		}
	else {
		if(count($this->aAan)==1)
			{ $sAan = $this->aAan[0][1]; }
		else
			{ $sAan = $this->aAan[$_POST['iAan']][1]; }
		
		$sHeader = "To: ".$sAan."\r\n";
		$sHeader .= "From: ".$_POST[1]." <".$_POST[2].">\r\n";
		
		$sMail = '';
		foreach($this->aVelden as $iKey => $aVeld)
			{ $sMail .= $aVeld[0].': '.$_POST[$iKey]."\n"; }
		
		if(!@mail($sAan,$this->sPrefix.$_POST[0],$sMail,$sHeader)) 
			{ echo 'Mailen niet gelukt.';}
		else
			{
			echo 'De mail is verzonden. '; 
			$_SESSION['iSpam'] = time()+$this->iSpam;
			$this->bIsGelukt = true;
			}
		}
	}
	
function Contact() {
	if($_SERVER['REQUEST_METHOD']=='POST') {
		$this->Mailen();
		}
	
	if(!$this->bIsGelukt) {
		$this->Formulier();
		}
	}
}
?>
<!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="nl" lang="nl">
<head>
	<title>Contact</title>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<?php
$aClass = new SimpelMail;
$aClass->sPage = $_SERVER['PHP_SELF'];
$aClass->Contact();
?>
</body></html>