Eenvoudig contactformulier
Auteur: Tuinstoel - 31 januari 2009 - 14:22 - Gekeurd door: marten - Hits: 23635 - Aantal punten: 4.00 (3 stemmen)
Als je geen verstand hebt van php enzo: Gewoon copy pasten, paar dingen in de bovenste regels veranderen, en hij werkt.
Ik heb het zo simpel mogelijk gehouden, ik heb 4/5 jaar geleden ook een contactformulier gemaakt maar deze is weer een stukje nieuwer .
|
Code: |
<?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>
<?php class SimpelMail { 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 */ // 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! // // tot hier ); 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) { ?><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() { 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) { { $aErr[] = 'Je bent het veld '.$aVeld[0].' vergeten.'; } } } echo 'Het volgende ging fout:<ul>'; foreach($aErr as $sFout) { echo '<li>'.$sFout.'</li>'; } } 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>
Download code (.txt)
|
|
Stemmen |
Niet ingelogd. |
|