Door
Jan Graneker
op 05-04-2016 08:28
gewijzigd op 05-04-2016 08:30
4.506 views
Goedemorgen PHP-ers,
Via PHPtutsDOTnl http://www.phptuts.nl/view/39/8/ heb ik een tutorial gevolgd om een contactformulier te maken. Dit is de code geworden:
Nu wil ik graag een mailfunctie inbouwen, zodat de ingevulde velden via de mail verstuurd worden. Heeft iemand hier een tutorial of tip voor?
<?php
// Controle of een formulier gepost is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Arrays declareren voor opslag van fouten en data
$aErrors = array();
$aData = array();
// Velden die in het formulier aanwezig moeten zijn
$aFormulierenVelden = array ("firstname", "street", "email", "surname", "place", "phonenumber", "licenseplate", "comment");
// Alle formuliervelden doorlopen
foreach($aFormulierenVelden as $sVeld)
{
// Controleren of er een waarde voor het formulierveld bestaat
if(isset($_POST[$sVeld]))
{
// Spaties aan begin en eind weghalen
$sValue = trim($_POST[$sVeld]);
// Controle of variabele gevuld is
if($sValue == '')
{
// Foutmelding toevoegen
$aErrors[] = 'Je bent vergeten om '.$sVeld.' in te vullen';
}
// Ingevulde waarden aan data array toevoegen
$aData[$sVeld] = $sValue;
}
else
{
$aErrors[] = 'Het veld '.$sVeld.' is niet gepost!';
}
}
// Controleren of er geen fouten opgetreden zijn
if(empty($aErrors))
{
// Formulier succes!
echo '<p>Bedankt, uw aanvraag is verstuurd.</p>';
}
else
{
// Fouten opgetreden: weergeven en terug naar home
header('Refresh: 3; url=afspraak_maken.html');
foreach($aErrors as $sError)
{
echo '<p style="color:red">'.$sError.'</p>';
}
}
}
else
{
// Verwerk.php mag nog niet bezocht worden, terug naar het formulier
header('Location: afspraak_maken.html');
}
?>
Nogmaals er bedankt voor je tijd. Wil het graag leren en al druk mee bezig, maar krijg het maar niet voor elkaar met die mailer.
Meldingen:
Warning: file_get_contents(De ingevoerde gegevens zijn: Firstname: Voornaam Street: Test 12 Email: [email protected] Surname: TestNijveldt Place: test Phonenumber: 0612345678 Licenseplate: 83-ie-93 Comment: Test ): failed to open stream: Invalid argument in C:\xampp\htdocs\oefening\formulier.php on line 55
Warning: preg_replace(): Compilation failed: missing terminating ] for character class at offset 3 in C:\xampp\htdocs\oefening\formulier.php on line 56
Fatal error: Call to undefined method PHPMailer::setFrom() in C:\xampp\htdocs\oefening\formulier.php on line 60
<?php
// Controle of een formulier gepost is
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Arrays declareren voor opslag van fouten en data
$aErrors = array();
$aData = array();
// Velden die in het formulier aanwezig moeten zijn
$aFormulierenVelden = array ("firstname", "street", "email", "surname", "place", "phonenumber", "licenseplate", "comment");
// Alle formuliervelden doorlopen
foreach($aFormulierenVelden as $sVeld)
{
// Controleren of er een waarde voor het formulierveld bestaat
if(isset($_POST[$sVeld]))
{
// Spaties aan begin en eind weghalen
$sValue = trim($_POST[$sVeld]);
// Controle of variabele gevuld is
if($sValue == '')
{
// Foutmelding toevoegen
$aErrors[] = 'Je bent vergeten om '.$sVeld.' in te vullen';
}
// Ingevulde waarden aan data array toevoegen
$aData[$sVeld] = $sValue;
}
else
{
$aErrors[] = 'Het veld '.$sVeld.' is niet gepost!';
}
}
// Controleren of er geen fouten opgetreden zijn
if(empty($aErrors))
{
$inhoud = "De ingevoerde gegevens zijn:".PHP_EOL;
foreach($aData as $veld=>$waarde) {
$inhoud .= ucfirst($veld).": ".$waarde.PHP_EOL;
}
// PHPmailer
require_once('_lib/class.phpmailer.php');
$mail = new PHPMailer(); // defaults to using php "mail()"
$body = file_get_contents($inhoud);
$body = preg_replace("#[\]#",'',$body);
$mail->AddReplyTo("[email protected]","First Last");
$mail->setFrom('[email protected]', 'First Last');
$mail->AddReplyTo("[email protected]","First Last");
$address = "[email protected]";
$mail->AddAddress($address, "John Doe");
$mail->Subject = "Aanvraag afspraak maken";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Bedankt, uw aanvraag is verstuurd.";
}
// Formulier succes!
echo '<p>Bedankt, uw aanvraag is verstuurd.</p>';
}
else
{
// Fouten opgetreden: weergeven en terug naar home
header('Refresh: 3; url=afspraak_maken.html');
foreach($aErrors as $sError)
{
echo '<p style="color:red">'.$sError.'</p>';
}
}
}
else
{
// Verwerk.php mag nog niet bezocht worden, terug naar het formulier
header('Location: afspraak_maken.html');
}
?>
Warning: file_get_contents(De ingevoerde gegevens zijn: Firstname: Voornaam Street: Test 12 Email: [email protected] Surname: dfasdf Place: test Phonenumber: 0612345678 Licenseplate: sdasd Comment: asds ): failed to open stream: Invalid argument in C:\xampp\htdocs\oefening\formulier.php on line 65