wit pagina, syntax error
Er is blijkbaar een syntax fout,maar ik kan het niet vinden.
live voorbeeld: jocke-overwater.nl/contact.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
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
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
<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// define variables and set to empty values
$vnaamErr = $anaamErr = $emailErr = "";
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (empty($_POST["voornaam"])) {
$vnaamErr = "Graag uw voornaam invullen";
} else {
$voornaam = test_input($_POST["voornaam"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z-' ]*$/",$voornaam)) {
$vnaamErr = "Uw voornaam mag alleen letters en spaties bevatten";
}
}
if (empty($_POST["achternaam"])) {
$anaamErr = "Graag uw achternaam invullen";
} else {
$achternaam = test_input($_POST["achternaam"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z-' ]*$/",$achternaam)) {
$anaamErr = "Uw achternaam mag alleen letters en spaties bevatten";
}
}
if (empty($_POST["mailadres"])) {
$emailErr = "Graag uw mailadres invullen";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Het formaat van het ingevoerde mailadres is niet correct";
}
}
$uwvraag = $_POST["mailadres"] ;
if (empty($vnaamErr && $anaamErr && $emailErr)) {
//mail versturen
$to = "Naar het mailadres";
$subject = "Mail afkomstig uit de website";
$body = "";
$body. = "Voornaam: " . $voornaam . "\r\n";
$body. = "Achternaam: " . $achternaam . "\r\n";
$body. = "Het mailadres: " . $voornaam . "\r\n";
$body. = "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers .="MIME-Version: 1.0" . "\r\n";
$headers .="Content-type:text/html;charset=UTF-8" . "\r\n";
if (mail($to,$subject,$body)) {
echo "bedankt voor uw mail. We nemen zsm contact met je op!";
} else {
echo "Mail niet verstuurd!";
}
} else {
echo "Er is iets mis gegaan met het contactformulier.";
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$page = "contact";
include "Inc/header.php";
?>
<div class="main">
<div class="formulier">
<h2>Contact formulier</h2><br/><br/>
<span>* verplichte velden</span><br/><br/>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
<label for="Voornaam">Voornaam</label><br />
<input type="text" id="voornaam" name="voornaam" value="<?php if (isset($_POST['voornaam']))echo htmlspecialchars($_POST['voornaam'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
<label for="achternaam">Achternaam</label><br />
<input type="text" id="achternaam" name="achternaam" value="<?php if (isset($_POST['achternaam']))echo htmlspecialchars($_POST['achternaam'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
<label for="Mailadres">Mailadres</label><br />
<input type="email" id="mailadres" name="mailadres" value="<?php if (isset($_POST['mailadres']))echo htmlspecialchars($_POST['mailadres'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
</br>
<label for="uwvraag">Uw vraag:</label></br>
<textarea id="uwvraag" name="uwvraag" rows="4" cols="50"></textarea></br></br>
<input type="submit" value="Verzenden"> <input type="reset" value="Reset">
</form>
</div>
</div>
<?php
include "Inc/footer.php";
?>
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// define variables and set to empty values
$vnaamErr = $anaamErr = $emailErr = "";
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (empty($_POST["voornaam"])) {
$vnaamErr = "Graag uw voornaam invullen";
} else {
$voornaam = test_input($_POST["voornaam"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z-' ]*$/",$voornaam)) {
$vnaamErr = "Uw voornaam mag alleen letters en spaties bevatten";
}
}
if (empty($_POST["achternaam"])) {
$anaamErr = "Graag uw achternaam invullen";
} else {
$achternaam = test_input($_POST["achternaam"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z-' ]*$/",$achternaam)) {
$anaamErr = "Uw achternaam mag alleen letters en spaties bevatten";
}
}
if (empty($_POST["mailadres"])) {
$emailErr = "Graag uw mailadres invullen";
} else {
$email = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Het formaat van het ingevoerde mailadres is niet correct";
}
}
$uwvraag = $_POST["mailadres"] ;
if (empty($vnaamErr && $anaamErr && $emailErr)) {
//mail versturen
$to = "Naar het mailadres";
$subject = "Mail afkomstig uit de website";
$body = "";
$body. = "Voornaam: " . $voornaam . "\r\n";
$body. = "Achternaam: " . $achternaam . "\r\n";
$body. = "Het mailadres: " . $voornaam . "\r\n";
$body. = "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers .="MIME-Version: 1.0" . "\r\n";
$headers .="Content-type:text/html;charset=UTF-8" . "\r\n";
if (mail($to,$subject,$body)) {
echo "bedankt voor uw mail. We nemen zsm contact met je op!";
} else {
echo "Mail niet verstuurd!";
}
} else {
echo "Er is iets mis gegaan met het contactformulier.";
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$page = "contact";
include "Inc/header.php";
?>
<div class="main">
<div class="formulier">
<h2>Contact formulier</h2><br/><br/>
<span>* verplichte velden</span><br/><br/>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
<label for="Voornaam">Voornaam</label><br />
<input type="text" id="voornaam" name="voornaam" value="<?php if (isset($_POST['voornaam']))echo htmlspecialchars($_POST['voornaam'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
<label for="achternaam">Achternaam</label><br />
<input type="text" id="achternaam" name="achternaam" value="<?php if (isset($_POST['achternaam']))echo htmlspecialchars($_POST['achternaam'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
<label for="Mailadres">Mailadres</label><br />
<input type="email" id="mailadres" name="mailadres" value="<?php if (isset($_POST['mailadres']))echo htmlspecialchars($_POST['mailadres'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
</br>
<label for="uwvraag">Uw vraag:</label></br>
<textarea id="uwvraag" name="uwvraag" rows="4" cols="50"></textarea></br></br>
<input type="submit" value="Verzenden"> <input type="reset" value="Reset">
</form>
</div>
</div>
<?php
include "Inc/footer.php";
?>
Gewijzigd op 21/09/2022 23:33:15 door Mohamed nvt
Wat zegt de error-log?
- Ariën - op 21/09/2022 23:22:39:
Wat zegt de error-log?
Bij de ISP bedoel je?
In ieder geval op de webserver.
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
Dat zou ook parse-errors moeten weergeven.
Als je script een } mist of een ; dan kan het script niet starten. Dan komt hij dus ook niet op regel 2,3 en 4 om error-reporting aan te zetten en eindig je met een wit scherm als de webserver standaard uitgaat van "geen errors tonen"
Vanaf regel 44 t/m 48 was er te veel ruimte tussen . en =.
Vanaf regel 37 check ik of alle variabelerrors leeg zijn, zo dan verstuur ik het formulier en anders wordt er een bericht weergegeven dat er iets mis gegaan met het formulier.
En juist nadat ik alles correct heb ingevuld in het formulier en dus de variabelerrors leeg zijn, wordt het formulier niet verzonden.
Iemand een idee waar ik het moet dan gaan zoeken?
Toevoeging op 22/09/2022 22:35:51:
Ik ben weer een stapje verder en nu kom ik twee bijzondere foutmeldingen tegen!
Om het formaat van het mailadres te controleren gebruik ik op regel 33 een functie om dit te doen. Nadat ik het juiste mailadres formaat heb ingevuld krijg ik toch de melding dat het formaat niet correct is!
En schijnbaar lijkt alles goed te gaan, want de controle of alle variabelerrors leeg zijn, gaat goed op regel 37 en de controle op regel 50 gaat ook goed, want na alles op het formulier verschijnt de melding van regel 51 en toch krijg ik geen mail binnen.
Hoe kan dit dan?
Iemand een idee!
Gewijzigd op 22/09/2022 22:39:24 door Mohamed nvt
Als er iets fout gaat kan je altijd een hele rits met foutmeldingen tonen.
Toevoeging op 22/09/2022 22:47:35:
En probeer ook zulke foutmeldingen als dit te vermijden.
"Er is iets mis gegaan met het contactformulier."
Vermeld wát er aan de hand is als het een foutmelding voor de gebruiker is. En als het een foutmelding is omdat je script niet werkt, vermeld dan dat het aan de website ligt. En log de fout op de achtergrond voor de programmeurs.
Niets is zo vervelend als onduidelijke foutmeldingen.
Gewijzigd op 22/09/2022 22:48:32 door - Ariën -
Code (php)
1
2
3
2
3
if (empty($vnaamErr) && empty($anaamErr) && empty($emailErr)) {
$uwvraag = $_POST["mailadres"] ;
if (empty($vnaamErr && $anaamErr && $emailErr)) {
$uwvraag = $_POST["mailadres"] ;
if (empty($vnaamErr && $anaamErr && $emailErr)) {
uwvraag is gelijk aan mailadres???
Het mailadres is gelijk aan $voornaam.
Consequent hoofdlettergebruik. Overal hoofdletter behalve "bedankt voor uw".
Wat doet $page = "contact";? $page wordt niet meer gebruikt.
Vermijd afkortingen en indien toch graag juist. zsm ==> z.s.m..
Gewijzigd op 23/09/2022 10:20:43 door Jan R
En ook nog eens onnodig. Ja, het kan handig lijken om al je input-data "schoon te maken" zodat deze "onschadelijk" is.
Maar data kan voor verschillende toepassingen op verschillende manieren lastig zijn.
* In een SQLquery is een ' vervelend, aangezien dat de begrenzing van een string aangeeft.
* in html is een < het begin van een html-tag, en dat wil je niet op je scherm hebben, danwel je wilt niet dat iemand javascript opneemt in de invoer
* ooit in een grijs verleden leek het de bouwers van PHP verstandig om bepaalde tekens direct te escapen met \ om een en ander ook veilig te hebben voor duffe programmeurs die zelf niet opletten. Daarom was vaak de stripslashes functie nodig. Maar dat is volgens mij ook al in php 5.weinig opgeheven.
Anyway:
trim(). Ok, kan ik me in vinden.
stripslashes() alleen als je php 4 draait. Ander kan iemand die het over C:\Windows heeft zijn tekst zien veranderen
htmlspecialchars() alleen in combinatie met het printen van tekst op scherm, of opbouwen van de body van de mail.
je verandert nu ook tekens die in een mail-adres voor voor mogen komen.
Ik heb bijvoorbeeld een mail adres ivo'[email protected] . En dat is een legaal formaat. Maar jij sloopt die ' tot '
---
preg_match("/^[a-zA-Z-' ]*$/",$voornaam)) {
$vnaamErr = "Uw voornaam mag alleen letters en spaties bevatten";
Wat is er toch mis met namen die andere tekens dan A-Z bevatten?
Ik ken zat mensen die een é of ë in de naam hebben.
Een naam die uit 1 spatie (of 10 voor mijn part), sta je weer wel toe.
Eerst constateer je dat de invoer niet leeg is (if (empty($_POST["voornaam"])) {)
Daarna haal je de data door test_input, zodat je de spaties trimt.
En tenslotte gebruik je * in je regex die ook 0 tekens prima vindt....
Gewijzigd op 23/09/2022 09:51:35 door Ivo P
Momenteel loop ik tegen de volgende errors aan:
1. Blijkbaar is de errors array leeg en ik krijg netjes de bevestiging dat het alles goed gaat, regel 53 en toch krijg ik geen mail binnen, ook niet in de spam map.
Iemand een idee waar ik het moet zoeken?
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
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
<?php
// define variables and set to empty values
$errors = array();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (empty($_POST["voornaam"])) {
$errors['voornaam'] = "Graag uw voornaam invullen";
} else {
$voornaam = test_input($_POST["voornaam"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z-' ]*$/",$voornaam)) {
$errors['voornaam'] = "Uw voornaam mag alleen letters en spaties bevatten";
}
}
if (empty($_POST["achternaam"])) {
$errors['achternaam'] = "Graag uw achternaam invullen";
} else {
$achternaam = test_input($_POST["achternaam"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z-' ]*$/",$achternaam)) {
$errors['achternaam'] = "Uw achternaam mag alleen letters en spaties bevatten";
}
}
if (empty($_POST["mailadres"])) {
$errors['mailadres'] = "Graag uw mailadres invullen";
} else {
$email = test_input($_POST["mailadres"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors['mailadres'] = "Het formaat van het ingevoerde mailadres is niet correct";
}
}
$uwvraag = test_input($_POST["uwvraag"]) ;
if (count($errors) == 0) {
//mail versturen
$to = "[email protected]";
$subject = "Mail afkomstig uit de website";
$message= "";
$message.= "Voornaam: " .$voornaam. "\r\n";
$message.= "Achternaam: " .$achternaam. "\r\n";
$message.= "Het mailadres: " .$email. "\r\n";
$message.= "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers.="MIME-Version: 1.0" . "\r\n";
$headers.="Content-type:text/html;charset=UTF-8" . "\r\n";
if (mail($to,$subject,$message,$headers)) {
echo "Bedankt voor uw mail. Er wordt contact met u opgenomen!";
} else {
echo "Mail niet verstuurd!";
}
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$page = "contact";
include "Inc/header.php";
?>
<div class="main">
<div class="formulier">
<h2>Contact formulier</h2><br/><br/>
<span>* verplichte velden</span><br/><br/>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
<label for="Voornaam">Voornaam</label><br />
<input type="text" id="voornaam" name="voornaam" value="<?php if (isset($_POST['voornaam']))echo htmlspecialchars($_POST['voornaam'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
<span>
<?php
if (isset($errors['voornaam'])) {
echo $errors['voornaam'];
}
?>
</span>
<label for="achternaam">Achternaam</label><br />
<input type="text" id="achternaam" name="achternaam" value="<?php if (isset($_POST['achternaam']))echo htmlspecialchars($_POST['achternaam'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
<span>
<?php
if (isset($errors['achternaam'])) {
echo $errors['achternaam'];
}
?>
</span>
<label for="Mailadres">Mailadres</label><br />
<input type="email" id="mailadres" name="mailadres" value="<?php if (isset($_POST['mailadres']))echo htmlspecialchars($_POST['mailadres'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
</br>
<span>
<?php
if (isset($errors['mailadres'])) {
echo $errors['mailadres'];
}
?>
</span>
<label for="uwvraag">Uw vraag:</label></br>
<textarea id="uwvraag" name="uwvraag" rows="4" cols="50"></textarea></br></br>
<input type="submit" value="Verzenden"> <input type="reset" value="Reset">
</form>
</div>
</div>
<?php
include "Inc/footer.php";
?>
// define variables and set to empty values
$errors = array();
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (empty($_POST["voornaam"])) {
$errors['voornaam'] = "Graag uw voornaam invullen";
} else {
$voornaam = test_input($_POST["voornaam"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z-' ]*$/",$voornaam)) {
$errors['voornaam'] = "Uw voornaam mag alleen letters en spaties bevatten";
}
}
if (empty($_POST["achternaam"])) {
$errors['achternaam'] = "Graag uw achternaam invullen";
} else {
$achternaam = test_input($_POST["achternaam"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z-' ]*$/",$achternaam)) {
$errors['achternaam'] = "Uw achternaam mag alleen letters en spaties bevatten";
}
}
if (empty($_POST["mailadres"])) {
$errors['mailadres'] = "Graag uw mailadres invullen";
} else {
$email = test_input($_POST["mailadres"]);
// check if e-mail address is well-formed
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors['mailadres'] = "Het formaat van het ingevoerde mailadres is niet correct";
}
}
$uwvraag = test_input($_POST["uwvraag"]) ;
if (count($errors) == 0) {
//mail versturen
$to = "[email protected]";
$subject = "Mail afkomstig uit de website";
$message= "";
$message.= "Voornaam: " .$voornaam. "\r\n";
$message.= "Achternaam: " .$achternaam. "\r\n";
$message.= "Het mailadres: " .$email. "\r\n";
$message.= "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers.="MIME-Version: 1.0" . "\r\n";
$headers.="Content-type:text/html;charset=UTF-8" . "\r\n";
if (mail($to,$subject,$message,$headers)) {
echo "Bedankt voor uw mail. Er wordt contact met u opgenomen!";
} else {
echo "Mail niet verstuurd!";
}
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
$page = "contact";
include "Inc/header.php";
?>
<div class="main">
<div class="formulier">
<h2>Contact formulier</h2><br/><br/>
<span>* verplichte velden</span><br/><br/>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
<label for="Voornaam">Voornaam</label><br />
<input type="text" id="voornaam" name="voornaam" value="<?php if (isset($_POST['voornaam']))echo htmlspecialchars($_POST['voornaam'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
<span>
<?php
if (isset($errors['voornaam'])) {
echo $errors['voornaam'];
}
?>
</span>
<label for="achternaam">Achternaam</label><br />
<input type="text" id="achternaam" name="achternaam" value="<?php if (isset($_POST['achternaam']))echo htmlspecialchars($_POST['achternaam'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
<span>
<?php
if (isset($errors['achternaam'])) {
echo $errors['achternaam'];
}
?>
</span>
<label for="Mailadres">Mailadres</label><br />
<input type="email" id="mailadres" name="mailadres" value="<?php if (isset($_POST['mailadres']))echo htmlspecialchars($_POST['mailadres'], ENT_QUOTES); ?>" required><span>*</span><br /><br />
</br>
<span>
<?php
if (isset($errors['mailadres'])) {
echo $errors['mailadres'];
}
?>
</span>
<label for="uwvraag">Uw vraag:</label></br>
<textarea id="uwvraag" name="uwvraag" rows="4" cols="50"></textarea></br></br>
<input type="submit" value="Verzenden"> <input type="reset" value="Reset">
</form>
</div>
</div>
<?php
include "Inc/footer.php";
?>
Hoe ziet je errors array eruit?
Gebruik anders phpmailer of een ander packet. Minder problemen en meer controle
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
echo 'Test pagina aangeroepen.';
$to = "[email protected]";
$subject = "Mail afkomstig uit de website";
$message= "";
$message.= "Voornaam: " .$voornaam. "\r\n";
$message.= "Achternaam: " .$achternaam. "\r\n";
$message.= "Het mailadres: " .$email. "\r\n";
$message.= "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers.="MIME-Version: 1.0" . "\r\n";
$headers.="Content-type:text/html;charset=UTF-8" . "\r\n";
mail($to,$subject,$message,$headers);
?>
echo 'Test pagina aangeroepen.';
$to = "[email protected]";
$subject = "Mail afkomstig uit de website";
$message= "";
$message.= "Voornaam: " .$voornaam. "\r\n";
$message.= "Achternaam: " .$achternaam. "\r\n";
$message.= "Het mailadres: " .$email. "\r\n";
$message.= "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers.="MIME-Version: 1.0" . "\r\n";
$headers.="Content-type:text/html;charset=UTF-8" . "\r\n";
mail($to,$subject,$message,$headers);
?>
Roep vervolgens de pagina test.php aan in je browser. Ontvang je de mail nu wel? Dan zit de fout in de rest van je code. Ontvang je de mail nog steeds niet, dan gaat er iets fout met het versturen.
- Ariën - op 24/09/2022 13:22:16:
Hoe ziet je errors array eruit?
Zoals hierboven regel 4 of wat bedoel je precies?
Toevoeging op 24/09/2022 23:28:38:
Jan R op 24/09/2022 18:36:33:
Zijn uw e-mail instellingen wel juist?
Gebruik anders phpmailer of een ander packet. Minder problemen en meer controle
Gebruik anders phpmailer of een ander packet. Minder problemen en meer controle
Welke e-mailinstellingen bedoel je?
Ik heb geen ervaringen met phpmailer. Is het lastig te configureren voor een contactformulier?
Toevoeging op 24/09/2022 23:31:42:
Ozzie PHP op 24/09/2022 21:26:18:
Als je het nou eens gewoon even simpel houdt. Vergeet die hele lap code en maak een nieuwe pagina test.php aan met daarin het onderstaande:
Roep vervolgens de pagina test.php aan in je browser. Ontvang je de mail nu wel? Dan zit de fout in de rest van je code. Ontvang je de mail nog steeds niet, dan gaat er iets fout met het versturen.
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
echo 'Test pagina aangeroepen.';
$to = "[email protected]";
$subject = "Mail afkomstig uit de website";
$message= "";
$message.= "Voornaam: " .$voornaam. "\r\n";
$message.= "Achternaam: " .$achternaam. "\r\n";
$message.= "Het mailadres: " .$email. "\r\n";
$message.= "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers.="MIME-Version: 1.0" . "\r\n";
$headers.="Content-type:text/html;charset=UTF-8" . "\r\n";
mail($to,$subject,$message,$headers);
?>
echo 'Test pagina aangeroepen.';
$to = "[email protected]";
$subject = "Mail afkomstig uit de website";
$message= "";
$message.= "Voornaam: " .$voornaam. "\r\n";
$message.= "Achternaam: " .$achternaam. "\r\n";
$message.= "Het mailadres: " .$email. "\r\n";
$message.= "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers.="MIME-Version: 1.0" . "\r\n";
$headers.="Content-type:text/html;charset=UTF-8" . "\r\n";
mail($to,$subject,$message,$headers);
?>
Roep vervolgens de pagina test.php aan in je browser. Ontvang je de mail nu wel? Dan zit de fout in de rest van je code. Ontvang je de mail nog steeds niet, dan gaat er iets fout met het versturen.
Dit werkt WEL bij mijn eigen ISP, maar niet bij het hostingbedrijf waar jocke-overwater.nl wordt gehost.
Overigens, de gehele code van contact.php werkt ook niet bij mijn eigen ISP....
Vervang deze regel:
mail($to,$subject,$message,$headers);
eens door
mail($to,$subject,$message,$headers, '-f [email protected]');
En probeer het dan nog eens.
Mohamed nvt op 24/09/2022 23:27:53:
Zoals hierboven regel 4 of wat bedoel je precies?
- Ariën - op 24/09/2022 13:22:16:
Hoe ziet je errors array eruit?
Zoals hierboven regel 4 of wat bedoel je precies?
Ik heb het over hoe je array eruit ziet.
En pas Ozzie's code aan naar dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
echo 'Test pagina aangeroepen.';
$to = "[email protected]";
$subject = "Mail afkomstig uit de website";
$message= "";
$message.= "Voornaam: " .$voornaam. "\r\n";
$message.= "Achternaam: " .$achternaam. "\r\n";
$message.= "Het mailadres: " .$email. "\r\n";
$message.= "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers.="MIME-Version: 1.0" . "\r\n";
$headers.="Content-type:text/html;charset=UTF-8" . "\r\n";
if(mail($to,$subject,$message,$headers)) {
echo "Het is gelukt";
} else {
echo "Het is mislukt.";
}
?>
echo 'Test pagina aangeroepen.';
$to = "[email protected]";
$subject = "Mail afkomstig uit de website";
$message= "";
$message.= "Voornaam: " .$voornaam. "\r\n";
$message.= "Achternaam: " .$achternaam. "\r\n";
$message.= "Het mailadres: " .$email. "\r\n";
$message.= "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers.="MIME-Version: 1.0" . "\r\n";
$headers.="Content-type:text/html;charset=UTF-8" . "\r\n";
if(mail($to,$subject,$message,$headers)) {
echo "Het is gelukt";
} else {
echo "Het is mislukt.";
}
?>
Dan zie je meteen of de mail() functie aangeroepen wordt.
Hoewel ikzelf toch liever phpMailer adviseer en dan via SMTP.
Dat werkt veel makkelijker, en is beter te debuggen omdat je dan meer controle hebt over de verbinding.
Gewijzigd op 25/09/2022 00:48:31 door - Ariën -
Ozzie PHP op 25/09/2022 00:37:20:
>> maar niet bij het hostingbedrijf waar jocke-overwater.nl wordt gehost
Vervang deze regel:
mail($to,$subject,$message,$headers);
eens door
mail($to,$subject,$message,$headers, '-f [email protected]');
En probeer het dan nog eens.
Vervang deze regel:
mail($to,$subject,$message,$headers);
eens door
mail($to,$subject,$message,$headers, '-f [email protected]');
En probeer het dan nog eens.
Bij Strato webhosting werkt bovenstaande wel, maar bij Hostnet, waar het domeinnaam Jocke-Overwater.nl wordt gehost, helaas niet.
Toevoeging op 25/09/2022 13:44:27:
- Ariën - op 25/09/2022 00:44:33:
Ik heb het over hoe je array eruit ziet.
En pas Ozzie's code aan naar dit:
Dan zie je meteen of de mail() functie aangeroepen wordt.
Hoewel ikzelf toch liever phpMailer adviseer en dan via SMTP.
Dat werkt veel makkelijker, en is beter te debuggen omdat je dan meer controle hebt over de verbinding.
Mohamed nvt op 24/09/2022 23:27:53:
Zoals hierboven regel 4 of wat bedoel je precies?
- Ariën - op 24/09/2022 13:22:16:
Hoe ziet je errors array eruit?
Zoals hierboven regel 4 of wat bedoel je precies?
Ik heb het over hoe je array eruit ziet.
En pas Ozzie's code aan naar dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
echo 'Test pagina aangeroepen.';
$to = "[email protected]";
$subject = "Mail afkomstig uit de website";
$message= "";
$message.= "Voornaam: " .$voornaam. "\r\n";
$message.= "Achternaam: " .$achternaam. "\r\n";
$message.= "Het mailadres: " .$email. "\r\n";
$message.= "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers.="MIME-Version: 1.0" . "\r\n";
$headers.="Content-type:text/html;charset=UTF-8" . "\r\n";
if(mail($to,$subject,$message,$headers)) {
echo "Het is gelukt";
} else {
echo "Het is mislukt.";
}
?>
echo 'Test pagina aangeroepen.';
$to = "[email protected]";
$subject = "Mail afkomstig uit de website";
$message= "";
$message.= "Voornaam: " .$voornaam. "\r\n";
$message.= "Achternaam: " .$achternaam. "\r\n";
$message.= "Het mailadres: " .$email. "\r\n";
$message.= "Uw vraag: " . $uwvraag. "\r\n";
$headers ="From: [email protected] \r\n";
$headers.="MIME-Version: 1.0" . "\r\n";
$headers.="Content-type:text/html;charset=UTF-8" . "\r\n";
if(mail($to,$subject,$message,$headers)) {
echo "Het is gelukt";
} else {
echo "Het is mislukt.";
}
?>
Dan zie je meteen of de mail() functie aangeroepen wordt.
Hoewel ikzelf toch liever phpMailer adviseer en dan via SMTP.
Dat werkt veel makkelijker, en is beter te debuggen omdat je dan meer controle hebt over de verbinding.
Wanneer ik print_r ($errors) aanroep, dan is het leeg!
Ik doe dit nadat ik gecontroleerd heb of de inhoud van de errors array groter is dan een 0
Toevoeging op 25/09/2022 13:45:51:
Ik heb een sterk vermoeden dat het probleem ligt aan Hostnet, waar het domeinnaam Jocke-overwater.nl wordt gehost, maar vreemd genoeg werkt de gehele code ook niet bij Strato..
Waar moet ik het zoeken denken jullie? Of vinden jullie dat ik perse moet overstappen naar PHPMailer?
Zelf raad ik aan om geen gebruik te krijgen van de mail()-functie en dus wel de SMTP-manier met phpMailer te gebruiken.
- Ariën - op 25/09/2022 13:53:00:
Het probleem ligt niet bij je error-array.
Zelf raad ik aan om geen gebruik te krijgen van de mail()-functie en dus wel de SMTP-manier met phpMailer te gebruiken.
Zelf raad ik aan om geen gebruik te krijgen van de mail()-functie en dus wel de SMTP-manier met phpMailer te gebruiken.
Oke, dankjewel voor jouw advies en ik ga mij verder verdiepen in PHPMailer.
Vreemd genoeg werkt de mail() wel bij Strato webhosting.
https://helpdesk.hostnet.nl/hc/nl-nl/articles/360015074777-E-mail-versturen-vanaf-je-website
Wat levert dit stukje op:
zegt PHP dat het gelukt is of niet?
Dit zegt namelijk of PHP de mail aan een mailserver kon overhandigen. Zeg maar zoals je een brief in de brievenbus op de hoek van de straat gooit.
Daarna kunnen er nog 100 dingen fout gaan: De server kan zelf detecteren dat het mailadres van de afzender niet bestaat en daarom de mail droppen.
De ontvangende servers kunnen concluderen dat de hostnet mailserver niet bij de afzender hoort en daarom de mail niet accepteren. Of dat de Hostnet server een te grote spamrating heeft.
Kortom: je kunt meekijken tot de mailserver hem aanpakt. En met PHPMailer kun je eventueel net iets meer info krijgen. Maar dan nog zit er verschil tussen "de mail wordt niet aangemomen door de mailserver" "de mail wordt niet verstuurd" en "de mail komt niet aan bij de ontvanger".
Effectief zal hij in deze 3 gevallen inderdaad niet aankomen bij de ontvanger, maar het waarom en op welke plek is de zoektocht.
Heb je dit gelezen: Wat levert dit stukje op:
Code (php)
zegt PHP dat het gelukt is of niet?
Dit zegt namelijk of PHP de mail aan een mailserver kon overhandigen. Zeg maar zoals je een brief in de brievenbus op de hoek van de straat gooit.
Daarna kunnen er nog 100 dingen fout gaan: De server kan zelf detecteren dat het mailadres van de afzender niet bestaat en daarom de mail droppen.
De ontvangende servers kunnen concluderen dat de hostnet mailserver niet bij de afzender hoort en daarom de mail niet accepteren. Of dat de Hostnet server een te grote spamrating heeft.
Kortom: je kunt meekijken tot de mailserver hem aanpakt. En met PHPMailer kun je eventueel net iets meer info krijgen. Maar dan nog zit er verschil tussen "de mail wordt niet aangemomen door de mailserver" "de mail wordt niet verstuurd" en "de mail komt niet aan bij de ontvanger".
Effectief zal hij in deze 3 gevallen inderdaad niet aankomen bij de ontvanger, maar het waarom en op welke plek is de zoektocht.
- Gebruik je eigen domeinnaam in het mailadres als afzender, dus geen hotmail.com, gmail.com of whatever.com
- Zorg dat het mailadres ook bestaat als alias die aan een mailbox of forwarder gekoppeld is.
Maar phpMailer blijft het beste.
Gewijzigd op 26/09/2022 11:23:17 door - Ariën -