Geen melding na versturen formulier
Ik heb een contactformulier wat na veel zoekwerk nu eindelijk naar mijn mail verstuurd wordt. Echter krijg ik geen melding dat deze verstuurd is. Ook als ik een veld niet invul krijg ik daar geen melding van, het formulier wordt ook niet naar de mail gestuurd.
Ik ben nieuw met php en weet ook niet zo goed waar ik moet zoeken. De codes heb ik van een uitleg op internet gekopieerd, dus ik heb geen idee waarom het bij mij niet werkt.
Het formulier: (index3.html)
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<form action="" method="post" id="myform">
<div>
<label for="name">Name:</label><br>
<input type="text" id="name" name="name" />
</div>
<div>
<label for="surname">Surname:</label><br>
<input type="text" id="surname" name="surname" />
</div>
<div>
<label for="companyname">Company Name:</label><br>
<input type="text" id="companyname" name="companyname" />
</div>
<div>
<label for="email">E-mail:</label><br>
<input type="email" id="email" name="email" />
</div>
<div>
<label for="bericht">Message:</label><br>
<textarea id="bericht" name="bericht"></textarea>
</div>
<div class="button">
<button type="submit" name="submit">Send your message</button>
</div>
</form>
<div>
<label for="name">Name:</label><br>
<input type="text" id="name" name="name" />
</div>
<div>
<label for="surname">Surname:</label><br>
<input type="text" id="surname" name="surname" />
</div>
<div>
<label for="companyname">Company Name:</label><br>
<input type="text" id="companyname" name="companyname" />
</div>
<div>
<label for="email">E-mail:</label><br>
<input type="email" id="email" name="email" />
</div>
<div>
<label for="bericht">Message:</label><br>
<textarea id="bericht" name="bericht"></textarea>
</div>
<div class="button">
<button type="submit" name="submit">Send your message</button>
</div>
</form>
PHP: (formverzenden.php)
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
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
<?php
if(isset($_POST['submit'])){
$naar = "[email protected]";
$onderwerp = "Contactformulier";
if(!empty($_POST['name'])){
$name = $_POST['name'];
}else{
die("U heeft geen voornaam ingevuld");
}
if(!empty($_POST['surname'])){
$surname = $_POST['surname'];
}else{
die("U heeft geen achternaam ingevuld");
}
if(!empty($_POST['companyname'])){
$companyname = $_POST['companyname'];
}else{
die("U heeft geen bedrijfsnaam ingevuld");
}
if(!empty($_POST['email'])){
$email = $_POST['email'];
}else{
die("U heeft geen emailadres ingevuld");
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
{
print '<p>Helaas, het email adres is niet correct!</p>';
$fout = true;
}
if(!empty($_POST['bericht'])){
$bericht = $_POST['bericht'];
}else{
die("U heeft geen bericht geschreven");
}
$sjabloon = "
Naam: {name} {surname}
Bedrijf: {companyname}
Email adres: {email}
Bericht: {bericht}
";
$message = str_replace("{name}", $name, $sjabloon);
$message = str_replace("{surname}", $surname, $sjabloon);
$message = str_replace("{companyname}", $companyname, $sjabloon);
$message = str_replace("{email}", $email, $message);
$bericht = nl2br($bericht);
$message = str_replace("{bericht}", $bericht, $message);
$headers = 'MIME-Version: 1.0\r\n';
$headers .= 'Content-type: text/html; charset=iso-8859-1\r\n';
$headers .= 'To: <' .$naar. '>\r\n';
$headers .= 'From: ' .$name. ' ' .$surname. ' <' .$email. '>\r\n';
if(mail($naar, $onderwerp, $message, $headers)){
echo "De mail is succesvol verzonden, u wordt teruggestuurd naar het formulier";
?>
<script language="javascript">setTimeout('document.location.href = "index3.html"', 2000);</script>
<?
}else{
die("De mail kon niet verzonden worden, probeer later nog eens.");
}
}else{
die('U heeft het formulier niet ingevuld');
}
?>
if(isset($_POST['submit'])){
$naar = "[email protected]";
$onderwerp = "Contactformulier";
if(!empty($_POST['name'])){
$name = $_POST['name'];
}else{
die("U heeft geen voornaam ingevuld");
}
if(!empty($_POST['surname'])){
$surname = $_POST['surname'];
}else{
die("U heeft geen achternaam ingevuld");
}
if(!empty($_POST['companyname'])){
$companyname = $_POST['companyname'];
}else{
die("U heeft geen bedrijfsnaam ingevuld");
}
if(!empty($_POST['email'])){
$email = $_POST['email'];
}else{
die("U heeft geen emailadres ingevuld");
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL)) // Als het email adres niet correct is
{
print '<p>Helaas, het email adres is niet correct!</p>';
$fout = true;
}
if(!empty($_POST['bericht'])){
$bericht = $_POST['bericht'];
}else{
die("U heeft geen bericht geschreven");
}
$sjabloon = "
Naam: {name} {surname}
Bedrijf: {companyname}
Email adres: {email}
Bericht: {bericht}
";
$message = str_replace("{name}", $name, $sjabloon);
$message = str_replace("{surname}", $surname, $sjabloon);
$message = str_replace("{companyname}", $companyname, $sjabloon);
$message = str_replace("{email}", $email, $message);
$bericht = nl2br($bericht);
$message = str_replace("{bericht}", $bericht, $message);
$headers = 'MIME-Version: 1.0\r\n';
$headers .= 'Content-type: text/html; charset=iso-8859-1\r\n';
$headers .= 'To: <' .$naar. '>\r\n';
$headers .= 'From: ' .$name. ' ' .$surname. ' <' .$email. '>\r\n';
if(mail($naar, $onderwerp, $message, $headers)){
echo "De mail is succesvol verzonden, u wordt teruggestuurd naar het formulier";
?>
<script language="javascript">setTimeout('document.location.href = "index3.html"', 2000);</script>
<?
}else{
die("De mail kon niet verzonden worden, probeer later nog eens.");
}
}else{
die('U heeft het formulier niet ingevuld');
}
?>
Dit staat in de <script> tags:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
$(document).ready(function(){
$("#myform").validate({
debug: false,
submitHandler: function(form) {
// do other stuff for a valid form
$.post('formverzenden.php', $("#myform").serialize(), function(data) {
$('#results').html(data);
});
}
});
});
$("#myform").validate({
debug: false,
submitHandler: function(form) {
// do other stuff for a valid form
$.post('formverzenden.php', $("#myform").serialize(), function(data) {
$('#results').html(data);
});
}
});
});
Ook zie ik dat in de mail die ik ontvang {name} en {surname} niet worden ingevuld, terwijl dit bij {email}, {companyname} en {bericht} wel gebeurd.
Kunnen jullie me hiermee helpen?
Gewijzigd op 13/03/2019 08:34:32 door Marina Koster
Zie je dan foutmeldingen verschijnen?
Ik ontvang wel de mail maar krijg geen foutmeldingen.
Welke foutmeldingen krijg je niet? En bij welke invoer?
Elk veld is verplicht, alleen bij het email veld krijg ik een melding als er geen @ of . in staat. Bij de rest krijg ik geen melding als ik deze leeg laat. Het formulier wordt dan ook niet naar de mail verstuurd. En als ik wel alle velden vul wordt de mail verstuurd alleen krijg je dit op de site niet te zien.
Quote:
$message = str_replace("{name}", $name, $sjabloon);
$message = str_replace("{surname}", $surname, $sjabloon);
$message = str_replace("{companyname}", $companyname, $sjabloon);
$message = str_replace("{email}", $email, $message);
$message = str_replace("{surname}", $surname, $sjabloon);
$message = str_replace("{companyname}", $companyname, $sjabloon);
$message = str_replace("{email}", $email, $message);
Je start altijd behalve bij email met het sjabloon. Dus enkel de laatste 2 worden omgezet.
Jan
ps: e-mail is met koppelteken
Quote:
Je start altijd behalve bij email met het sjabloon. Dus enkel de laatste 2 worden omgezet.
Dan snap ik niet waarom companyname, email en bericht alle drie wel verstuurd worden. In de code zie ik geen verschil met name en surname.
Dat is niet consistent met de andere controles.
Anyway, die() beëindigt je script, en dat wíl je eigenlijk niet. Het zou mooier zijn als je alle fouten verzamelt, en daarna deze gezamenlijk toont .
Die str_replaces zijn ook overbodig, je kan de variabelen ook zelf gebruiken.
Ik kan later vandaag even een opzetje maken voor een beter contactformulier.
Gewijzigd op 13/03/2019 09:42:38 door - Ariën -
- Ariën - op 13/03/2019 09:40:21:
Als je logisch kijk zie je dat overal een (vieze!) die() gebruikt en daar bij de controle van het mail adres een $fout = true'. En een print daarna.
Dat is niet consistent met de andere controles.
Anyway, die() beëindigt je script, en dat wíl je eigenlijk niet. Het zou mooier zijn als je alle fouten verzamelt, en daarna deze gezamenlijk toont .
Die str_replaces zijn ook overbodig, je kan de variabelen ook zelf gebruiken.
Ik kan later vandaag even een opzetje maken voor een beter contactformulier.
Dat is niet consistent met de andere controles.
Anyway, die() beëindigt je script, en dat wíl je eigenlijk niet. Het zou mooier zijn als je alle fouten verzamelt, en daarna deze gezamenlijk toont .
Die str_replaces zijn ook overbodig, je kan de variabelen ook zelf gebruiken.
Ik kan later vandaag even een opzetje maken voor een beter contactformulier.
Dat zou heel fijn zijn! Deze code heb ik een op een overgenomen dus ik heb ook geen idee hoe ik het zou moeten verbeteren.
Toevoeging op 13/03/2019 10:31:48:
Quote:
Ik kan later vandaag even een opzetje maken voor een beter contactformulier.
Ik heb nu iets anders gevonden, ik weet niet of dit beter is?
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
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
<?php
$naar = '[email protected]';
$onderwerp = 'Contactformulier';
// Header instellen, zodat nl2br() werkt
$headers = "MIME-version: 1.0\r\n";
$headers .= "content-type: text/html;charset=utf-8\r\n";
if(isset($_POST['submit'])) // Als het formulier verzonden is door op de verzend knop te klikken
{
$name = trim($_POST['name']);
$surname = trim($_POST['surname']);
$companyname = trim($_POST['companyname']);
$email = trim($_POST['email']);
$bericht = trim($_POST['bericht']);
$fout = false;
if(empty($name))
{
print '<p>Helaas, het voornaam veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true;
}
if(empty($surname))
{
print '<p>Helaas, het achternaam veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true;
}
if(empty($companyname))
{
print '<p>Helaas, het bedrijfsnaam veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true;
}
if(empty($email))
{
print '<p>Helaas, het e-mail veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true;
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
print '<p>Helaas, het email adres is niet correct!</p>';
$fout = true;
}
if(empty($bericht))
{
print '<p>Helaas, het bericht veld is verplicht maar is nu niet ingvuld!</p>';
$fout = true;
}
if($fout == false)
{
$headers .= 'From: ' . $name . ' ' . $surname . ' <' . $email . '>';
if(mail($naar, $onderwerp, nl2br($bericht), $headers))
{
print '<p>Het bericht is succesvol verzonden!</p>';
}
else
{
print '<p>Helaas, er is wat fout gegaan tijdens het verzenden van het formulier.</p>';
}
}
}
?>
$naar = '[email protected]';
$onderwerp = 'Contactformulier';
// Header instellen, zodat nl2br() werkt
$headers = "MIME-version: 1.0\r\n";
$headers .= "content-type: text/html;charset=utf-8\r\n";
if(isset($_POST['submit'])) // Als het formulier verzonden is door op de verzend knop te klikken
{
$name = trim($_POST['name']);
$surname = trim($_POST['surname']);
$companyname = trim($_POST['companyname']);
$email = trim($_POST['email']);
$bericht = trim($_POST['bericht']);
$fout = false;
if(empty($name))
{
print '<p>Helaas, het voornaam veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true;
}
if(empty($surname))
{
print '<p>Helaas, het achternaam veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true;
}
if(empty($companyname))
{
print '<p>Helaas, het bedrijfsnaam veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true;
}
if(empty($email))
{
print '<p>Helaas, het e-mail veld is verplicht maar is nu niet ingevuld!</p>';
$fout = true;
}
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
{
print '<p>Helaas, het email adres is niet correct!</p>';
$fout = true;
}
if(empty($bericht))
{
print '<p>Helaas, het bericht veld is verplicht maar is nu niet ingvuld!</p>';
$fout = true;
}
if($fout == false)
{
$headers .= 'From: ' . $name . ' ' . $surname . ' <' . $email . '>';
if(mail($naar, $onderwerp, nl2br($bericht), $headers))
{
print '<p>Het bericht is succesvol verzonden!</p>';
}
else
{
print '<p>Helaas, er is wat fout gegaan tijdens het verzenden van het formulier.</p>';
}
}
}
?>
Het gaat hier ook nog niet goed. Ik krijg nu een mail met de naam, achternaam, e-mailadres en het bericht, alleen hoe zorg ik ervoor dat de bedrijfsnaam wel ergens vermeld wordt?
En ook hier krijg ik geen melding dat het formulier is verzonden.
https://www.phphulp.nl/php/script/data-verwerking/contact-formulier/12/contactformulierphp/1419/ wordt ook veel gebruikt, merk ik. Het voorkomt ook een berichtenflood.
Gewijzigd op 13/03/2019 11:18:11 door - Ariën -
- Ariën - op 13/03/2019 11:17:44:
https://www.phphulp.nl/php/script/data-verwerking/contact-formulier/12/contactformulierphp/1419/ wordt ook veel gebruikt, merk ik. Het voorkomt ook een berichtenflood.
Daar staat ook een stukje html in met het formulier, maar ik heb mijn formulier op index.html staan. Hoe kan ik zorgen dat mijn formulier gebruikt wordt?
En na het verzenden wordt je gestuurd naar een bedanktpagina, maar is het mogelijk een bedankje te krijgen op de pagina waar het formulier staat? d.m.v. een pop-up? Dit had ik bij het vorige formulier wel als bij het e-mailadres een @ of . vergeten was.
Popupjes zou ik afraden.
- Ariën - op 13/03/2019 13:36:49:
Je kan ook via de 'action' doorverwijzen naar dit formulier. Maar om welke site gaat het? Dan kunnen we even kijken wat de beste opzet is.
Popupjes zou ik afraden.
Popupjes zou ik afraden.
Ik ben bezig een site te vernieuwen, de nieuwe versie staat nog niet online.
Voor nu even:
http://www.partsfactory.com/test/index3.html
Dan kan je het contactformulier prima gebruiken met het bestaande formulier, maar dan moet je het geen .html noemen, maar .php.
Bedoel je index3.html? Hoe moet ik dit combineren met de php van de link die je stuurde?
Gewijzigd op 13/03/2019 16:07:52 door - Ariën -
Is een bericht dat 'het versturen gelukt is' niet veel praktischer. Nu kom ik op de index uit, wat verwarrend is.
Onderstaand is het laatste deel van die php, welk deel moet ik dan vervangen?
En is het dan beter het te openen in een nieuw tabblad of op de bestaande pagina en dan een knop om terug te keren naar de site?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
if (mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
echo '<h1>Het contactformulier is verzonden</h1>
<p>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>';
}
else
{
echo '<h1>Het contactformulier is niet verzonden</h1>
<p><b>Onze excuses.</b> Het contactformulier kon niet verzonden worden.</p>';
}
}
?>
if (mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
echo '<h1>Het contactformulier is verzonden</h1>
<p>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>';
}
else
{
echo '<h1>Het contactformulier is niet verzonden</h1>
<p><b>Onze excuses.</b> Het contactformulier kon niet verzonden worden.</p>';
}
}
?>
Je verwijst overigens gewoon naar /test/index.php. Dus daar moet die controle ook inzitten.
- Ariën - op 13/03/2019 16:37:08:
Dan zou je een bericht moeten krijgen.
Wat voor soort bericht bedoel je dan?
Ik heb overigens wel meerdere testen van het formulier ontvangen.
- Ariën - op 13/03/2019 16:37:08:
Je verwijst overigens gewoon naar /test/index.php. Dus daar moet die controle ook inzitten.
Welke controle bedoel je?
Excuses voor de vele vragen, ik ben echt nieuw met php.