Beginnen met formulieren en op zoek naar het stukje emailadres
en kan leuk het formulier op beeld krijgen maar dan?
Heb gebruikt het uitgewerkte voorbeeld van "Mijn eerste formulier"
en het tweede deel "verwerk2.php"
In dit formulier kan ik opgeven voornaam, achternaam, dag, maand, en jaar
( het formulier ging niet verder als 1950
maar ik heb al aan kunnen passen dat mijn geboortejaar 1946 ook kan.
het tweede deel controleert of alles is ingevuld en klaar voor verzending laat ook zien wat er is ingevuld.
Wat ik mis in het verhaal, hoe krijg ik de gegevens van het ingevulde formulier
verzonden naar het emailadres van mijn website.
Ik heb stap voor stap alles zitten doorlezen maar mis dat stuk?
Wie wil mij verder helpen.
Met vriendelijke groet Johan
mail? Het werkt best basaal, maar ikzelf gebruik phpMailer welke een stuk uitgebreider te configureren is.
Heb je al gekeken naar Gewijzigd op 27/11/2017 22:50:19 door - Ariën -
Zijn er ook voorbeelden met een Nederlandse toelichting ( in het Engels raak ik de weg kwijt en die heb ik nog niet eens gevonden) en waar moet ik het in het "script" neerzetten?
Of probeer gewoon eerst eens een los test scriptje:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$website_naam = 'mijndomeinnaam.nl';
$mailbox = '[email protected]';
$headers = 'From: ' . $website_naam . ' <' . $mailbox. '>' . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Priority: Normal' . "\r\n";
mail('[email protected]', 'Test', 'Mijn eerste mailtje vanuit PHP', $headers);
?>
$website_naam = 'mijndomeinnaam.nl';
$mailbox = '[email protected]';
$headers = 'From: ' . $website_naam . ' <' . $mailbox. '>' . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Priority: Normal' . "\r\n";
mail('[email protected]', 'Test', 'Mijn eerste mailtje vanuit PHP', $headers);
?>
mijndomeinnaam.nl moet je uiteraard aanpassen aan je eigen domeinnaam.
info@domeinnaam is bij voorkeur een bestaande mailbox die bij je domein hoort.
[email protected] aanpassen aan je eigen prive mailadres waarop je de mail wilt ontvangen.
Afhankelijk van je opstelling zul je wellicht verschillende dingen kunnen proberen, maar dit hangt voornamelijk af waar vandaan je mail probeert te versturen.
Je lokale WAMP/XAMP/LAMP/MAMP opstelling heeft zelf geen mailserver, dus dan zou je de (SMTP) mail-gegevens van je internetprovider kunnen proberen, of die van GMail in kunnen vullen bijvoorbeeld.
Heb je ergens wat webruimte bij je lokale interwebsboer dan werkt mail() mogelijk al out-of-the-box, wellicht met enkele restricties ten aanzien van afzendadres, afhankelijk van het type hosting. Je zou in dat geval @Frank zijn fragment hierboven eens kunnen proberen.
De mail()-functie retourneert een waarde die aangeeft of het verzenden is geslaagd. Net zoals bij post in de echte wereld biedt het op de bus doen van een brief geen absolute garanties ten aanzien van ontvangst (zou ook niet de eerste keer zijn dat mail verkeerd geconfigureerd is :p). En hier kan ook tijd overheen gaan. En spamfilters keuren een e-mailbericht mogelijk ook af op grond van de vorm en/of inhoud. Daarom is het belangrijk dat een mailtje op de goede manier wordt opgesteld. Als je verder niet in protocollen en RFC's wilt duiken is in dat geval een library aan te bevelen zoals @Ariën aanhaalt. Maar het enige waar je in principe zekerheid over kunt krijgen is dat je je e-mailbericht in de brievenbus hebt gedaan zeg maar.
Als extra controle zou je jezelf natuurlijk een BCC (een anonieme kopie) kunnen sturen.
Maar voor de rest is mailen "simpel" omdat je simpelweg niet zoveel kunt doen binnen PHP behalve mail() en/of een library gebruiken (en heeft dus enige configuratie nodig als je vanuit een lokale test- of ontwikkelomgeving wilt mailen).
1) Gebruik geen isset() om te controleren of je formulier is ingevuld, maar controleer netjes of er een POST-request is gedaan:
2) Vermijd het kopiëren van variabelen:
3)
Quote:
Het kan gebeuren dat als je, jouw server niet goed geconfigureerd heb, deze foutmelding krijgt als je een e-mail probeert te versturen:
“can't connect to local MySQL server”
“can't connect to local MySQL server”
Lol... Dit klopt natuurlijk niet. Het gaat over het mailen, en niet over MySQL.
Jammer dat ik niet meer kan inloggen of registreren op die site, want dan had ik die schrijver wel even deze tips meegegeven.
Gewijzigd op 28/11/2017 13:41:57 door - Ariën -
Gewijzigd op 28/11/2017 14:20:17 door Jan te Pas
Ga het allemaal uitproberen dus het kan even duren voor ik de voortgang en of het gelukt is kan melden.
Mijn website http://www.marinehospitaal.nl loopt via Hostnet en ik doe een poging een inschrijfformulier te maken voor de reünie medio 2018. De ingevulde gegevens op dat formulier wil ik dan verzenden naar een van mijn email adressen. Dat zou dan gaan via Hostnet mail maar ik kan ook gebruik maken van Hotmail of de KPN dus ik kan er verschillende proberen.
Met de standaard mail-functie van PHP wordt het lastiger. Daarom raad ik phpMailer aan. Waarbij het voordeel ook nog eens is dat je niet met headers hoeft te spelen.
Gewijzigd op 28/11/2017 14:49:07 door - Ariën -
- Ariën - op 28/11/2017 10:51:39:
Jammer dat ik niet meer kan inloggen of registreren op die site, want dan had ik die schrijver wel even deze tips meegegeven.
Uit de comments aldaar had je in principe al op kunnen maken dat die tutorial (zwaar) verouderd is.
Simpelweg omdat iemand een artikel publiceert op het internet, zelfs als dit op een community-site is, wil dat niet zeggen dat wat er wordt gezegd accuraat, veilig of up-to-date is (of in het ergste geval, uberhaupt klopt).
Probeer daarom altijd te achterhalen hoe actueel een tutorial is (datums ontbreken daar, dat is een gemis, en dat heb ik meerdere keren aangekaart). En kijk ook vooral naar de user comments, vaak staan daar (niet alleen m.b.t. tot sm.be maar in het algemeen) meer kloppende dingen in dan in de tutorial zelf.
En het inloggen en registreren heb ik daar persoonlijk op slot gegooid, omdat die site na een ongevraagde update zo lek was als een mand. Binnen een maand of twee na die update was de site gehacked via een ingenieuze SQL-injectie. Alles wijst erop dat dit een doelbewuste actie was, mogelijk door oud-crewleden die verbolgen waren over het bestuur daaro :p. Er was simpelweg geen redden aan die code dus het enige wat ik in principe kon doen was iedereen geforceerd uitloggen en het registreren en inloggen uitschakelen. Op deze manier is die site in ieder geval nog als archief beschikbaar.
Ondanks inspanningen is een opvolger nooit echt van de grond gekomen.
- Ariën - op 28/11/2017 14:48:42:
Met de phpMailer class kan je eenvoudig een (veiligde) connectie met iedere bereikbare mailserver opzetten.
Met de standaard mail-functie van PHP wordt het lastiger. Daarom raad ik phpMailer aan. Waarbij het voordeel ook nog eens is dat je niet met headers hoeft te spelen.
Met de standaard mail-functie van PHP wordt het lastiger. Daarom raad ik phpMailer aan. Waarbij het voordeel ook nog eens is dat je niet met headers hoeft te spelen.
Toevoeging op 28/11/2017 17:11:00:
Natuurlijk ook volgens eerder advies naar phpMailer gekeken, maar daar staat alles in het Engels en dan moet ik helaas afhaken.
Toevoeging op 28/11/2017 17:12:18:
Frank Nietbelangrijk op 28/11/2017 16:31:29:
Et voila zo van hostnet.nl:
https://www.hostnet.nl/helpdesk/webhosting/e-mail-versturen-vanaf-je-website
https://www.hostnet.nl/helpdesk/webhosting/e-mail-versturen-vanaf-je-website
Toevoeging op 28/11/2017 17:13:24:
Top Hartelijk dank voor deze link Nemen we mee Voorlopig ben ik wel zoet.
Toch is PHPMailer niet zo moeilijk om te gebruiken. Je moet slechts (uit mijn hoofd) twee libraries invoegen met require_once() en dan kun je de voorbeeld code gebruiken om de PHPMailer class te gebruiken. Het lastigste is het juist configureren van de instellingen. Anyway voor hostnet.nl heb je het niet perse nodig. Het wordt anders als je bijvoorbeeld op je eigen Windows PC wilt testen zoals Thomas al opmerkte. Let er op dat je - ook voor de afzender - BESTAANDE mailadressen gebruikt.
en het tweede deel "verwerk2.php"
In dit formulier kan ik opgeven voornaam, achternaam, dag, maand, en jaar
( het formulier ging niet verder als 1950
maar ik heb al aan kunnen passen dat mijn geboortejaar 1946 ook kan.
het tweede deel controleert of alles is ingevuld en klaar voor verzending laat ook zien wat er is ingevuld.
Iets niet ingevuld geeft een melding TOP
Tot hier loopt het en het ziet er leuk uit.
Nu moet het stukje voor de mailverzending van HOSTNET erbij. Waar moet dat staal in het geheel?
Op de plek waar je validatie gepasseerd is. Als het niet lukt, laat je code eens zien.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
<form action="verwerk2.php" method="post">
<br><br><br><br>
<p>
<label for="voornaam">Voornaam:</label>
<input type="text" name="voornaam" id="voornaam" />
</p>
<br>
<p>
<label for="achternaam">Achternaam:</label>
<input type="text" name="achternaam" id="achternaam" />
</p>
<br>
<p>
<label>Geboortedatum:</label>
<select name="dag">
<?php
for($i = 1; $i <= 31; $i++)
{
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select>
<select name="maand">
<?php
for($i = 1; $i <= 12; $i++)
{
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select>
<select name="jaar">
<?php
for($i = date('Y'); $i >= 1922; $i--)
{
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select>
</p>
<br>
<p>
<input type="submit" value="Verzenden" />
</p>
</form>
<?php
include '../../inc/stats.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
$aFormulierVelden = array(
'voornaam',
'achternaam',
'dag',
'maand',
'jaar'
);
// Waarden uit de $_POST array doorlopen
foreach($aFormulierVelden as $sVeld)
{
if(isset($_POST[$sVeld]))
{
// Spaties aan begin en eind weghalen
$sValue = trim($_POST[$sVeld]);
// Controle of variabele gevuld is
if(empty($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!';
}
}
// Datum controle
if(isset($aData['maand'], $aData['dag'], $aData['jaar'])
&& checkdate($aData['maand'], $aData['dag'], $aData['jaar']))
{
$sDatum = $aData['dag'].'-'.$aData['maand'].'-'.$aData['jaar'];
}
else
{
$aErrors[] = 'Dit is geen geldige datum';
}
// Controleren of er geen fouten opgetreden zijn
if(empty($aErrors))
{
// Formulier succes!
echo '<p>Je hebt het formulier succesvol ingevuld!
De volgende gegevens zijn bekend:</p>';
echo '<p>Voornaam: '.$aData['voornaam'].'<br />';
echo 'Achternaam: '.$aData['achternaam'].'</p>';
echo '<p>Geboortedatum: '.$sDatum.'</p>';
}
else
{
// Fouten opgetreden: weergeven en terug naar formulier
header('Refresh: 3; url=formulier2.php');
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: formulier2.php');
}
?>
<br><br><br><br>
<p>
<label for="voornaam">Voornaam:</label>
<input type="text" name="voornaam" id="voornaam" />
</p>
<br>
<p>
<label for="achternaam">Achternaam:</label>
<input type="text" name="achternaam" id="achternaam" />
</p>
<br>
<p>
<label>Geboortedatum:</label>
<select name="dag">
<?php
for($i = 1; $i <= 31; $i++)
{
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select>
<select name="maand">
<?php
for($i = 1; $i <= 12; $i++)
{
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select>
<select name="jaar">
<?php
for($i = date('Y'); $i >= 1922; $i--)
{
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select>
</p>
<br>
<p>
<input type="submit" value="Verzenden" />
</p>
</form>
<?php
include '../../inc/stats.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
$aFormulierVelden = array(
'voornaam',
'achternaam',
'dag',
'maand',
'jaar'
);
// Waarden uit de $_POST array doorlopen
foreach($aFormulierVelden as $sVeld)
{
if(isset($_POST[$sVeld]))
{
// Spaties aan begin en eind weghalen
$sValue = trim($_POST[$sVeld]);
// Controle of variabele gevuld is
if(empty($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!';
}
}
// Datum controle
if(isset($aData['maand'], $aData['dag'], $aData['jaar'])
&& checkdate($aData['maand'], $aData['dag'], $aData['jaar']))
{
$sDatum = $aData['dag'].'-'.$aData['maand'].'-'.$aData['jaar'];
}
else
{
$aErrors[] = 'Dit is geen geldige datum';
}
// Controleren of er geen fouten opgetreden zijn
if(empty($aErrors))
{
// Formulier succes!
echo '<p>Je hebt het formulier succesvol ingevuld!
De volgende gegevens zijn bekend:</p>';
echo '<p>Voornaam: '.$aData['voornaam'].'<br />';
echo 'Achternaam: '.$aData['achternaam'].'</p>';
echo '<p>Geboortedatum: '.$sDatum.'</p>';
}
else
{
// Fouten opgetreden: weergeven en terug naar formulier
header('Refresh: 3; url=formulier2.php');
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: formulier2.php');
}
?>
Toevoeging op 01/12/2017 20:24:58:
Hij is al heel mooi zo. Ik geef eerlijk toe ik begrijp het niet allemaal maar zie al wel hoe ik er velden bij kan maken. Maar dat is voor later.
a. eerst moet dat stukje van Hostnet voor de mailverzending op de juiste plaats.
b. als tweede wil ik bij een niet ingevuld veld na de melding hiervan terug naar het gedeeltelijk ingevulde formulier.
Daarna kan het alleen maar mooier worden.
Gewijzigd op 03/12/2017 17:54:45 door - Ariën -
Verder hoor je de PHP-scripting eerst te plaatsen, en niet halverwege je HTML. En zo hoort er ook een exit; achter je location header.
Gewijzigd op 01/12/2017 21:20:48 door - Ariën -
Code (php)
ZET ACHTER EEN REDIRECT OOK ALTIJD exit(); anders loopt je code gewoon door!
Toevoeging op 01/12/2017 22:07:56:
De redirect heeft twee voordelen:
a) De pagina die in de POST methode wordt geladen wordt direct weer verlaten waarmee dubbel indienen wordt beperkt.
b) Je kunt een nieuwe volledige HTML pagina laden met een fraaie melding.
Gewijzigd op 01/12/2017 22:23:15 door Frank Nietbelangrijk
het leek makkelijker dan het is
regel 58 tot 62 weggehaald stukje Hosnetmail geplaatst alsmede redirect alsmede exit
Mail wordt niet verzonden en er komt de melding van wat er is ingevuld op het scherm meer niet
Klopt het stuk wat erna staat nu nog wel?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
<form action="verwerk2.php" method="post">
<br><br><br><br>
<p>
<label for="voornaam">Voornaam:</label>
<input type="text" name="voornaam" id="voornaam" />
</p>
<br>
<p>
<label for="achternaam">Achternaam:</label>
<input type="text" name="achternaam" id="achternaam" />
</p>
<br>
<p>
<label>Geboortedatum:</label>
<select name="dag">
<?php
for($i = 1; $i <= 31; $i++)
{
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select>
<select name="maand">
<?php
for($i = 1; $i <= 12; $i++)
{
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select>
<select name="jaar">
<?php
for($i = date('Y'); $i >= 1922; $i--)
{
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select>
</p>
<br>
<p>
<input type="submit" value="Verzenden" />
</p>
</form>
<?php
include '../../inc/stats.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
$aFormulierVelden = array(
'voornaam',
'achternaam',
'dag',
'maand',
'jaar'
);
// Waarden uit de $_POST array doorlopen
foreach($aFormulierVelden as $sVeld)
{
if(isset($_POST[$sVeld]))
{
// Spaties aan begin en eind weghalen
$sValue = trim($_POST[$sVeld]);
// Controle of variabele gevuld is
if(empty($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!';
}
}
// Datum controle
if(isset($aData['maand'], $aData['dag'], $aData['jaar'])
&& checkdate($aData['maand'], $aData['dag'], $aData['jaar']))
{
$sDatum = $aData['dag'].'-'.$aData['maand'].'-'.$aData['jaar'];
}
else
{
$aErrors[] = 'Dit is geen geldige datum';
}
// Controleren of er geen fouten opgetreden zijn
if(empty($aErrors))
{
// Formulier succes!
// Regel 58 tot 62 weg inplakken Hostnet mail
// gevolgd door stukje redirect
$onderwerp = "Inschrijving MHO reünie 2018";
$inhoud = "Mijn tekstbericht.";
$ontvanger = "[email protected]";
$afzender = "[email protected]";
$headers = array();
$headers[ ] = "MIME-Version: 1.0";
$headers[ ] = "Content-type: text/plain; charset=utf-8";
$headers[ ] = "From: Afzendernaam <{$afzender}>";
$headers[ ] = "Reply-To: Afzendernaam <{$afzender}>";
$headers[ ] = "X-Mailer: PHP/".phpversion();
mail($ontvanger, $onderwerp, $inhoud, implode("\r\n", $headers), "-f".$afzender);
}
else
{
// verstuur mail
// .....
// redirect
header ('location: index.html');
exit;
// doet dit laatste stuk nog iets?
// Fouten opgetreden: weergeven en terug naar formulier
header('Refresh: 3; url=formulier2.php');
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: formulier2.php');
}
?>
<br><br><br><br>
<p>
<label for="voornaam">Voornaam:</label>
<input type="text" name="voornaam" id="voornaam" />
</p>
<br>
<p>
<label for="achternaam">Achternaam:</label>
<input type="text" name="achternaam" id="achternaam" />
</p>
<br>
<p>
<label>Geboortedatum:</label>
<select name="dag">
<?php
for($i = 1; $i <= 31; $i++)
{
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select>
<select name="maand">
<?php
for($i = 1; $i <= 12; $i++)
{
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select>
<select name="jaar">
<?php
for($i = date('Y'); $i >= 1922; $i--)
{
echo '<option value="'.$i.'">'.$i.'</option>';
}
?>
</select>
</p>
<br>
<p>
<input type="submit" value="Verzenden" />
</p>
</form>
<?php
include '../../inc/stats.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
$aFormulierVelden = array(
'voornaam',
'achternaam',
'dag',
'maand',
'jaar'
);
// Waarden uit de $_POST array doorlopen
foreach($aFormulierVelden as $sVeld)
{
if(isset($_POST[$sVeld]))
{
// Spaties aan begin en eind weghalen
$sValue = trim($_POST[$sVeld]);
// Controle of variabele gevuld is
if(empty($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!';
}
}
// Datum controle
if(isset($aData['maand'], $aData['dag'], $aData['jaar'])
&& checkdate($aData['maand'], $aData['dag'], $aData['jaar']))
{
$sDatum = $aData['dag'].'-'.$aData['maand'].'-'.$aData['jaar'];
}
else
{
$aErrors[] = 'Dit is geen geldige datum';
}
// Controleren of er geen fouten opgetreden zijn
if(empty($aErrors))
{
// Formulier succes!
// Regel 58 tot 62 weg inplakken Hostnet mail
// gevolgd door stukje redirect
$onderwerp = "Inschrijving MHO reünie 2018";
$inhoud = "Mijn tekstbericht.";
$ontvanger = "[email protected]";
$afzender = "[email protected]";
$headers = array();
$headers[ ] = "MIME-Version: 1.0";
$headers[ ] = "Content-type: text/plain; charset=utf-8";
$headers[ ] = "From: Afzendernaam <{$afzender}>";
$headers[ ] = "Reply-To: Afzendernaam <{$afzender}>";
$headers[ ] = "X-Mailer: PHP/".phpversion();
mail($ontvanger, $onderwerp, $inhoud, implode("\r\n", $headers), "-f".$afzender);
}
else
{
// verstuur mail
// .....
// redirect
header ('location: index.html');
exit;
// doet dit laatste stuk nog iets?
// Fouten opgetreden: weergeven en terug naar formulier
header('Refresh: 3; url=formulier2.php');
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: formulier2.php');
}
?>
Edit:
Code-tags toegevoegd.
Gelieve in het vervolg deze zelf te plaatsen. Zie ook De Veelgestelde Vragen.
Gelieve in het vervolg deze zelf te plaatsen. Zie ook De Veelgestelde Vragen.
Gewijzigd op 03/12/2017 17:54:22 door - Ariën -
Want als er HTML voor staat, gaat dit conflicteren met location-headers. En los daarvan hoort daar altijd nog een exit(); achter.
Ook raad ik niet aan om je mailadres hier open en bloot neer te zetten, om spam te voorkomen.
Op lijn 127 zou je geen headers moeten tonen. Het is een beetje vervelend om de gebruiker maar enkele seconden te laten zien wat hij fout doet.
Gewijzigd op 03/12/2017 18:00:59 door - Ariën -