Bericht verzenden via website
Ik ben nieuw op het forum en ben net begonnen met het schrijven van een formulier script voor mijn website.
Voor velen van jullie zal dit een eenvoudig scrip zijn.
Dit script moet een aantal gegevens versturen waaronder een bericht.
Het onderstaande script werkt, ook het bericht wordt verstuurd.
Code (php)
1
2
3
4
2
3
4
<tr>
<td align="left" valign="top">Bericht:</td>
<td><textarea name="Bericht" rows="15" cols="40"></textarea></td>
</tr>
<td align="left" valign="top">Bericht:</td>
<td><textarea name="Bericht" rows="15" cols="40"></textarea></td>
</tr>
Ik wil echter in het bericht 15 kolommen maken, en dat lukt mij niet.
In deze kolommen moet een tekst ingevuld kunnen worden.
Ik hoop dat iemand mij verder kan helpen.
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
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
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Contact</title>
<link rel="stylesheet" href="addStyle.css">
<script src="p_specific.js"></script>
<script src="p_general.js"></script>
</head>
<body>
<center>.
<h1>Inschrijfformulier</h1>
<font color="#0404B4" size="5"><b>Le Franciscus Tour 2018</b></font>
<?php
if (empty($_POST)) {
//formulier niet verzonden, geef formulier weer
?>
<form action="Inschrijfformulier.php" method="post">
<table border="0">
<tr>
<td width="76">Vooraam:</td>
<td width="268"><input type="text" name="Voornaam"></td>
</tr>
<tr>
<td>Achternaam:</td>
<td><input type="text" name="Achternaam"></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="Email"></td>
</tr>
<tr>
<td>Telefoon:</td>
<td><input type="text" name="Telefoon"></td>
</tr>
<tr>
<td>Afdeling:</td>
<td><input type="text" name="Afdeling"></td>
</tr>
<tr>
<td>Teamnaam:</td>
<td><input type="text" name="Teamnaam"></td>
</tr>
<tr>
<td align="left" valign="top">Bericht:</td>
<td><textarea name="Bericht" rows="15" cols="40"></textarea></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Verzenden"></td>
</tr>
</table>
</form>
<?php
}
else {
//formulier wel verzonden, verzend bericht
//definieer verzendopties
$ontvanger = '[email protected]';
$onderwerp = 'Inschrijving tdf spel 2018';
//stel bericht op
$bericht = 'Voornaam: '.$_POST['Voornaam'].'
Achternaam: '.$_POST['Achternaam'].'
Email: '.$_POST['Email'].'
Telefoon: '.$_POST['Telefoon'].'
Afdeling: '.$_POST['Afdeling'].'
Teamnaam: '.$_POST['Teamnaam'].'
Bericht: '.$_POST['Bericht'];
//stel verzend-header op
$verzender = 'From: '.$_POST['Voornaam'].' '.$_POST['Achternaam'].' <'.$_POST['Email'].'>';
//verzend bericht
if (mail($ontvanger, $onderwerp, $bericht, $verzender)) {
//succesmelding als correct verzonden
echo '<p>Bericht is succesvol verzonden.</p>';
}
else {
//foutmelding als niet verzonden
echo '<p>Er is een fout opgetreden bij het verzenden van het bericht. Probeer het later nogmaals.</p>';
}
}
?>
</center>.
</body>
</html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Contact</title>
<link rel="stylesheet" href="addStyle.css">
<script src="p_specific.js"></script>
<script src="p_general.js"></script>
</head>
<body>
<center>.
<h1>Inschrijfformulier</h1>
<font color="#0404B4" size="5"><b>Le Franciscus Tour 2018</b></font>
<?php
if (empty($_POST)) {
//formulier niet verzonden, geef formulier weer
?>
<form action="Inschrijfformulier.php" method="post">
<table border="0">
<tr>
<td width="76">Vooraam:</td>
<td width="268"><input type="text" name="Voornaam"></td>
</tr>
<tr>
<td>Achternaam:</td>
<td><input type="text" name="Achternaam"></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="Email"></td>
</tr>
<tr>
<td>Telefoon:</td>
<td><input type="text" name="Telefoon"></td>
</tr>
<tr>
<td>Afdeling:</td>
<td><input type="text" name="Afdeling"></td>
</tr>
<tr>
<td>Teamnaam:</td>
<td><input type="text" name="Teamnaam"></td>
</tr>
<tr>
<td align="left" valign="top">Bericht:</td>
<td><textarea name="Bericht" rows="15" cols="40"></textarea></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Verzenden"></td>
</tr>
</table>
</form>
<?php
}
else {
//formulier wel verzonden, verzend bericht
//definieer verzendopties
$ontvanger = '[email protected]';
$onderwerp = 'Inschrijving tdf spel 2018';
//stel bericht op
$bericht = 'Voornaam: '.$_POST['Voornaam'].'
Achternaam: '.$_POST['Achternaam'].'
Email: '.$_POST['Email'].'
Telefoon: '.$_POST['Telefoon'].'
Afdeling: '.$_POST['Afdeling'].'
Teamnaam: '.$_POST['Teamnaam'].'
Bericht: '.$_POST['Bericht'];
//stel verzend-header op
$verzender = 'From: '.$_POST['Voornaam'].' '.$_POST['Achternaam'].' <'.$_POST['Email'].'>';
//verzend bericht
if (mail($ontvanger, $onderwerp, $bericht, $verzender)) {
//succesmelding als correct verzonden
echo '<p>Bericht is succesvol verzonden.</p>';
}
else {
//foutmelding als niet verzonden
echo '<p>Er is een fout opgetreden bij het verzenden van het bericht. Probeer het later nogmaals.</p>';
}
}
?>
</center>.
</body>
</html>
Gewijzigd op 01/06/2018 12:41:05 door - Ariën -
Bedoel je kolommen of rijen? Want 15 kolommen naast elkaar lijkt mij onoverzichtelijk en niet de bedoeling.
Laat anders eens een schets zien.
Gewijzigd op 01/06/2018 11:40:41 door - Ariën -
Ik ben echt een leek en ben al heel blij met wat ik bereikt heb met dit script.
Wat bedoel je tussen code-tags plaatsen.
Ik kan het niet vinden bij de veel gestelde vragen.
Ik heb hieronder gekopieerd waar het denk ik om gaat.
Ik wil graag 15 rijen (die gescheiden zijn) waar een tekst in geplaats kan worden.
__________________
Tekst 1
__________________
Tekst 2
__________________
Tekst 3
__________________
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
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
<form action="Inschrijfformulier.php" method="post">
<table border="0">
<tr>
<td width="76">Vooraam:</td>
<td width="268"><input type="text" name="Voornaam"></td>
</tr>
<tr>
<td>Achternaam:</td>
<td><input type="text" name="Achternaam"></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="Email"></td>
</tr>
<tr>
<td>Telefoon:</td>
<td><input type="text" name="Telefoon"></td>
</tr>
<tr>
<td>Afdeling:</td>
<td><input type="text" name="Afdeling"></td>
</tr>
<tr>
<td>Teamnaam:</td>
<td><input type="text" name="Teamnaam"></td>
</tr>
<tr>
<td align="left" valign="top">Bericht:</td>
<td><textarea name="Bericht" rows="15" cols="40"></textarea></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Verzenden"></td>
</tr>
</table>
</form>
<table border="0">
<tr>
<td width="76">Vooraam:</td>
<td width="268"><input type="text" name="Voornaam"></td>
</tr>
<tr>
<td>Achternaam:</td>
<td><input type="text" name="Achternaam"></td>
</tr>
<tr>
<td>Email:</td>
<td><input type="text" name="Email"></td>
</tr>
<tr>
<td>Telefoon:</td>
<td><input type="text" name="Telefoon"></td>
</tr>
<tr>
<td>Afdeling:</td>
<td><input type="text" name="Afdeling"></td>
</tr>
<tr>
<td>Teamnaam:</td>
<td><input type="text" name="Teamnaam"></td>
</tr>
<tr>
<td align="left" valign="top">Bericht:</td>
<td><textarea name="Bericht" rows="15" cols="40"></textarea></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="Verzenden"></td>
</tr>
</table>
</form>
Gewijzigd op 01/06/2018 12:39:19 door - Ariën -
Ik heb het voor je aangepast.
verder kan je de velden toch kopiëren, waarbij je name uniek maakt.
Uiteraard doe je dat hetzelfde ook in de mail zelf.
Gewijzigd op 01/06/2018 12:39:29 door - Ariën -
Het is gelukt.
Bedankt voor het meedenken
Wel wil ik je erop wijzen dat je mailformuier behoorlijk vatbaar is voor 'header-injection', en spammers kunnen er misbruik van maken door mails naar jan-en-alleman te sturen.
Ik raad aan om met filter_var() te controleren op de ingevoerde mailadressen.
Mag ik er trouwens op wijzen dat dit fomulier niet echt lekker loopt in eht algemeen?
Heel even een heel klein voorbeeldje van een contact formulier dat je een idee kan geven van hoe het beter zou kunnen zijn:
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
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
<!DOCTYPE html>
<html lang="nl">
<!-- Dit vervangt je hele content-header -->
<meta charset="utf-8">
<!-- dit is om je site op verschillende toestellen (telefoon, laptop, desktop, tablet, ...) bruikbaar te maken -->
<meta name="viewport" content="
<title>Contact</title>
</head>
<body>
<!-- dit voeg ik altijd toe, maar is neit verplicht. Het wordt vooral met CSS frameworks gebruikt -->
<div id="container">
<h1>Contact opnemen</h1>
<!-- Het volgende kijkt of het formulier verstuurd ik met de knop. Zo niet, dan toont hij het formulier, anders gaat hij valideren en versturen. -->
<?php if(isset($_POST['submit'])) { ?>
<form action="post">
<!-- het label wordt aan de id van het corresponderende element gekoppeld -->
<label for="nam">Naam: (verplicht)</label>
<!-- De place holder is een tip wat er in het veld moet komen. De required toont aan dat het veld verplicht is -->
<inpt type="text" name="naam" id="naam" placeholder="Uw naam" required>
<label for="emailadres">E-mailadres: (verplicht)</label>
<!-- Dit type laat de browser controlleren of de ingevulde waarde wel effectief een emailadres is -->
<input type="email" name="emailadres" id="emailadres" placeholder="[email protected]" required>
<label for="bericht">Bericht: (verplicht)</label>
<textarea name="bericht" id="bericht" cols="76" rows="30" required></textarea>
<!-- verstuur het bericht -->
<input type="submit" name="submit" id="submit" value="Versturen">
</form>
<?php
} else {
// zet een array met ingevoerde waarden
// De waarden worden gefilterd, zodat html weggehaald wordt
$waarde = array(
'naam' => htmlspecialchars($_POST['naam'], ENT_QUOTES), // ENT_QUOTES vervangt quotes ook
'email' => htmlspecialchars($_POST['emailadres'], ENT_QUOTES),
'bericht' => htmlspecialchars(wordwrap($_POST['bericht'], ENT_QUOTES, 70, '\r\n'), ENT_QUOTES),
// de wordwrap hierboven laat maar 70 tekens per lijn toe
'naar' => '[email protected]'
);
// Probeer het formulier te versturen
// Let wel op: de gegevens moeten vervangen worden
$email = mail($waarde['naar'], 'Bericht van website', $waarde['bericht'], 'From: '.$waarde['email']);
if(!$email) {
echo "<p>Er is een probleem opgetreden bij het versturen van het bericht. Probeer het a.u.b. later
nogmaals.</p>";
} else }
echo "<p>Uw bericht is met succes verzonden. U krijgt spoedig een antwoord.</p>";
}
}
?>
</div>
</body>
</html>
<html lang="nl">
<!-- Dit vervangt je hele content-header -->
<meta charset="utf-8">
<!-- dit is om je site op verschillende toestellen (telefoon, laptop, desktop, tablet, ...) bruikbaar te maken -->
<meta name="viewport" content="
<title>Contact</title>
</head>
<body>
<!-- dit voeg ik altijd toe, maar is neit verplicht. Het wordt vooral met CSS frameworks gebruikt -->
<div id="container">
<h1>Contact opnemen</h1>
<!-- Het volgende kijkt of het formulier verstuurd ik met de knop. Zo niet, dan toont hij het formulier, anders gaat hij valideren en versturen. -->
<?php if(isset($_POST['submit'])) { ?>
<form action="post">
<!-- het label wordt aan de id van het corresponderende element gekoppeld -->
<label for="nam">Naam: (verplicht)</label>
<!-- De place holder is een tip wat er in het veld moet komen. De required toont aan dat het veld verplicht is -->
<inpt type="text" name="naam" id="naam" placeholder="Uw naam" required>
<label for="emailadres">E-mailadres: (verplicht)</label>
<!-- Dit type laat de browser controlleren of de ingevulde waarde wel effectief een emailadres is -->
<input type="email" name="emailadres" id="emailadres" placeholder="[email protected]" required>
<label for="bericht">Bericht: (verplicht)</label>
<textarea name="bericht" id="bericht" cols="76" rows="30" required></textarea>
<!-- verstuur het bericht -->
<input type="submit" name="submit" id="submit" value="Versturen">
</form>
<?php
} else {
// zet een array met ingevoerde waarden
// De waarden worden gefilterd, zodat html weggehaald wordt
$waarde = array(
'naam' => htmlspecialchars($_POST['naam'], ENT_QUOTES), // ENT_QUOTES vervangt quotes ook
'email' => htmlspecialchars($_POST['emailadres'], ENT_QUOTES),
'bericht' => htmlspecialchars(wordwrap($_POST['bericht'], ENT_QUOTES, 70, '\r\n'), ENT_QUOTES),
// de wordwrap hierboven laat maar 70 tekens per lijn toe
'naar' => '[email protected]'
);
// Probeer het formulier te versturen
// Let wel op: de gegevens moeten vervangen worden
$email = mail($waarde['naar'], 'Bericht van website', $waarde['bericht'], 'From: '.$waarde['email']);
if(!$email) {
echo "<p>Er is een probleem opgetreden bij het versturen van het bericht. Probeer het a.u.b. later
nogmaals.</p>";
} else }
echo "<p>Uw bericht is met succes verzonden. U krijgt spoedig een antwoord.</p>";
}
}
?>
</div>
</body>
</html>
Het is een erg basis voorbeeld, dat geef ik toe, maar het is veiliger dan dat van jou, het voegt wat toegankelijkheid voor blinden en slechtzienden toe en het toont wat andere best practices, zoals woordafbreking.
Als je specifieke vragen hebt over het script, hoor ik het graag. Verder ben ik blij dat je vraag beantwoord is.