PHP formulier - email bevestiging naar inschrijver
Ik heb op basis van een aangekocht ontwerp mijn eigen website gebouwd incl. een aanmeldformulier met php verwerking. Het werkt allemaal, heel fijn.
Nu is zo dat degene die aanmeld een bevestiging ziet op de webpagina en de gegevens worden gestuurd naar mijn mailadres. Dat moet ook zo blijven. Ik zou alleen extra willen dat degene die zich inschrijft automatisch ook een email krijgt met daarin bevestigd dat hij/zij zich heeft aangemeld.
Welke codering kan ik toevoegen? En waar moet ik dat doen?
Ik ben al maanden aan het zoeken hier op het forum en op de rest van het internet maar ik kom er niet uit.
Super bedankt alvast voor jullie reactie.
NB: het daadwerkelijke formulier staat in de html van de website en dus niet in dit php bestand.
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
151
152
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
151
152
<?php
// Your Email
$recipient = "MIJN EMAILADRES"; //
// Check $recipient
if($recipient === '') {
returnAndExitAjaxResponse(
constructAjaxResponseArray(
FALSE,
'RECIPIENT_IS_NOT_SET',
array('error_message'=> 'RECIPIENT email address is not set. Please configure the script.')
)
);
}
// Check for empty required field
if(!isset($_POST["email"]) ||!isset($_POST["emailp"]) || !isset($_POST["fname"]) || !isset($_POST["lname"]) ||!isset($_POST["adres"]) || !isset($_POST["place"]) || !isset($_POST["phonenumber"]) ||!isset($_POST["message"])) {
returnAndExitAjaxResponse(
constructAjaxResponseArray(
FALSE,
'MISSING_REQUIRED_FIELDS',
array('error_message'=> 'MISSING_REQUIRED_FIELDS should not be occurred.')
)
);
}
// Sanitize input
$fname = filter_var($_POST["fname"], FILTER_SANITIZE_STRING);
$lname = filter_var($_POST["lname"], FILTER_SANITIZE_EMAIL);
$email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
$emailp = filter_var(trim($_POST["emailp"]), FILTER_SANITIZE_EMAIL);
$adres = filter_var(trim($_POST["adres"]), FILTER_SANITIZE_EMAIL);
$place = filter_var(trim($_POST["place"]), FILTER_SANITIZE_EMAIL);
$phonenumber = filter_var(trim($_POST["phonenumber"]), FILTER_SANITIZE_EMAIL);
$training = filter_var(trim($_POST["training"]), FILTER_SANITIZE_EMAIL);
$niveau = filter_var(trim($_POST["niveau"]), FILTER_SANITIZE_EMAIL);
$age = filter_var(trim($_POST["age"]), FILTER_SANITIZE_EMAIL);
$message = filter_var($_POST["message"], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
// If non required fields are empty
if ( empty($training) ){
$training = "Kies gewenste training.";
}
if ( empty($niveau) ){
$niveau = "Selecteer niveau.";
}
if ( empty($age) ){
$age = "Geen leeftijd aangegeven.";
}
// Headers
$headers = 'From: '.$fname.' <'.$email.'>' . "\r\n";
$headers .= 'Reply-To: '.$email.'' . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion();
// Subject
$subject = "Nieuwe aanmelding via contactformulier";
// Build Message
$email_content = "Voornaam: $fname\n";
$email_content .= "Achternaam: $lname\n";
$email_content .= "Email: $email\n";
$email_content .= "Email ouders/verzorgers: $emailp\n\n";
$email_content .= "Adres: $adres\n\n";
$email_content .= "Woonplaats: $place\n\n";
$email_content .= "Telefoonnummer: $phonenumber\n\n";
$email_content .= "Leeftijd: $age\n\n";
$email_content .= "Training: $training\n\n";
$email_content .= "Niveau: $niveau\n\n";
$email_content .= "Bericht:\n$message\n\n\n";
// Check if sent
try {
$sendmailResult = mail($recipient, $subject, $email_content, $headers);
if( $sendmailResult === TRUE ) {
returnAndExitAjaxResponse(
constructAjaxResponseArray(
TRUE
)
);
} else {
returnAndExitAjaxResponse(
constructAjaxResponseArray(
FALSE,
'ERROR_AT_PHPMAIL',
array('error_information'=> error_get_last() )
)
);
}
} catch (Exception $_e) {
returnAndExitAjaxResponse(
constructAjaxResponseArray(
TRUE,
'ERROR_AT_PHPMAIL',
array('error_message'=> $_e->getMessage())
)
);
}
/*
Construct ajax response array
Input: Result (bool), Message (optional), Data to be sent back in array
*/
function constructAjaxResponseArray ($_response, $_message = '', $_json = null) {
$_responseArray = array();
$_response = ( $_response === TRUE ) ? TRUE : FALSE;
$_responseArray['response'] = $_response;
if(isset($_message)) $_responseArray['message'] = $_message;
if(isset($_json)) $_responseArray['json'] = $_json;
return $_responseArray;
}
/*
Returns in the Gframe ajax format.
Input: data array processed by constructAjaxResponseArray ()
Outputs as a html stream then exits.
*/
function returnAndExitAjaxResponse ($_ajaxResponse) {
if(!$_ajaxResponse){
$_ajaxResponse = array('response'=>false,'message'=>'Unknown error occurred.');
}
header("Content-Type: application/json; charset=utf-8");
echo json_encode($_ajaxResponse);
die();
}
// Function to get the client IP address
function get_client_ip() {
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
} else if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else if(isset($_SERVER['HTTP_X_FORWARDED'])) {
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
} else if(isset($_SERVER['HTTP_FORWARDED_FOR'])) {
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
} else if(isset($_SERVER['HTTP_FORWARDED'])) {
$ipaddress = $_SERVER['HTTP_FORWARDED'];
} else if(isset($_SERVER['REMOTE_ADDR'])) {
$ipaddress = $_SERVER['REMOTE_ADDR'];
} else {
$ipaddress = 'UNKNOWN';
}
return $ipaddress;
}
?>
// Your Email
$recipient = "MIJN EMAILADRES"; //
// Check $recipient
if($recipient === '') {
returnAndExitAjaxResponse(
constructAjaxResponseArray(
FALSE,
'RECIPIENT_IS_NOT_SET',
array('error_message'=> 'RECIPIENT email address is not set. Please configure the script.')
)
);
}
// Check for empty required field
if(!isset($_POST["email"]) ||!isset($_POST["emailp"]) || !isset($_POST["fname"]) || !isset($_POST["lname"]) ||!isset($_POST["adres"]) || !isset($_POST["place"]) || !isset($_POST["phonenumber"]) ||!isset($_POST["message"])) {
returnAndExitAjaxResponse(
constructAjaxResponseArray(
FALSE,
'MISSING_REQUIRED_FIELDS',
array('error_message'=> 'MISSING_REQUIRED_FIELDS should not be occurred.')
)
);
}
// Sanitize input
$fname = filter_var($_POST["fname"], FILTER_SANITIZE_STRING);
$lname = filter_var($_POST["lname"], FILTER_SANITIZE_EMAIL);
$email = filter_var(trim($_POST["email"]), FILTER_SANITIZE_EMAIL);
$emailp = filter_var(trim($_POST["emailp"]), FILTER_SANITIZE_EMAIL);
$adres = filter_var(trim($_POST["adres"]), FILTER_SANITIZE_EMAIL);
$place = filter_var(trim($_POST["place"]), FILTER_SANITIZE_EMAIL);
$phonenumber = filter_var(trim($_POST["phonenumber"]), FILTER_SANITIZE_EMAIL);
$training = filter_var(trim($_POST["training"]), FILTER_SANITIZE_EMAIL);
$niveau = filter_var(trim($_POST["niveau"]), FILTER_SANITIZE_EMAIL);
$age = filter_var(trim($_POST["age"]), FILTER_SANITIZE_EMAIL);
$message = filter_var($_POST["message"], FILTER_SANITIZE_STRING, FILTER_FLAG_NO_ENCODE_QUOTES);
// If non required fields are empty
if ( empty($training) ){
$training = "Kies gewenste training.";
}
if ( empty($niveau) ){
$niveau = "Selecteer niveau.";
}
if ( empty($age) ){
$age = "Geen leeftijd aangegeven.";
}
// Headers
$headers = 'From: '.$fname.' <'.$email.'>' . "\r\n";
$headers .= 'Reply-To: '.$email.'' . "\r\n";
$headers .= 'X-Mailer: PHP/' . phpversion();
// Subject
$subject = "Nieuwe aanmelding via contactformulier";
// Build Message
$email_content = "Voornaam: $fname\n";
$email_content .= "Achternaam: $lname\n";
$email_content .= "Email: $email\n";
$email_content .= "Email ouders/verzorgers: $emailp\n\n";
$email_content .= "Adres: $adres\n\n";
$email_content .= "Woonplaats: $place\n\n";
$email_content .= "Telefoonnummer: $phonenumber\n\n";
$email_content .= "Leeftijd: $age\n\n";
$email_content .= "Training: $training\n\n";
$email_content .= "Niveau: $niveau\n\n";
$email_content .= "Bericht:\n$message\n\n\n";
// Check if sent
try {
$sendmailResult = mail($recipient, $subject, $email_content, $headers);
if( $sendmailResult === TRUE ) {
returnAndExitAjaxResponse(
constructAjaxResponseArray(
TRUE
)
);
} else {
returnAndExitAjaxResponse(
constructAjaxResponseArray(
FALSE,
'ERROR_AT_PHPMAIL',
array('error_information'=> error_get_last() )
)
);
}
} catch (Exception $_e) {
returnAndExitAjaxResponse(
constructAjaxResponseArray(
TRUE,
'ERROR_AT_PHPMAIL',
array('error_message'=> $_e->getMessage())
)
);
}
/*
Construct ajax response array
Input: Result (bool), Message (optional), Data to be sent back in array
*/
function constructAjaxResponseArray ($_response, $_message = '', $_json = null) {
$_responseArray = array();
$_response = ( $_response === TRUE ) ? TRUE : FALSE;
$_responseArray['response'] = $_response;
if(isset($_message)) $_responseArray['message'] = $_message;
if(isset($_json)) $_responseArray['json'] = $_json;
return $_responseArray;
}
/*
Returns in the Gframe ajax format.
Input: data array processed by constructAjaxResponseArray ()
Outputs as a html stream then exits.
*/
function returnAndExitAjaxResponse ($_ajaxResponse) {
if(!$_ajaxResponse){
$_ajaxResponse = array('response'=>false,'message'=>'Unknown error occurred.');
}
header("Content-Type: application/json; charset=utf-8");
echo json_encode($_ajaxResponse);
die();
}
// Function to get the client IP address
function get_client_ip() {
$ipaddress = '';
if (isset($_SERVER['HTTP_CLIENT_IP'])) {
$ipaddress = $_SERVER['HTTP_CLIENT_IP'];
} else if(isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ipaddress = $_SERVER['HTTP_X_FORWARDED_FOR'];
} else if(isset($_SERVER['HTTP_X_FORWARDED'])) {
$ipaddress = $_SERVER['HTTP_X_FORWARDED'];
} else if(isset($_SERVER['HTTP_FORWARDED_FOR'])) {
$ipaddress = $_SERVER['HTTP_FORWARDED_FOR'];
} else if(isset($_SERVER['HTTP_FORWARDED'])) {
$ipaddress = $_SERVER['HTTP_FORWARDED'];
} else if(isset($_SERVER['REMOTE_ADDR'])) {
$ipaddress = $_SERVER['REMOTE_ADDR'];
} else {
$ipaddress = 'UNKNOWN';
}
return $ipaddress;
}
?>
Als dit geen probleem is ($recipient is een publiek/algemeen contactadres) dan is het toevoegen van een BCC-regel (een van de) de eenvoudigste oplossing(en) met een minimale impact op de rest van de code.
Anders kun je misschien beter een apart mailtje opstellen, eventueel met aanvullende tekst ("Wij hebben de volgende informatie van u ontvangen..." o.i.d.).
Bedankt voor de reacties. Ik ga proberen of ik er zo uitkom.
het is wel verstandig om de mail dan als 'to:' te versturen naar je eigen, en niet naar de eerste van de lijst. Het zou jammer zijn/haar mailadres op straat ligt.
Onthoud ook dat de mails dan identiek zullen zijn. Voor een gepersonaliseerde mail (Beste dhr. / mevr. xxxx) is (B)CC niet geschikt. Dan moet je de mail per stuk verzenden.
Gewijzigd op 23/01/2018 22:02:22 door - Ariën -
Mocht ik wel een ander bericht per mail willen sturen. Bijv. Bedankt voor je aanmelding, we nemen zo snel mogelijk contact met je op, kan dat dan ook met dit php-script en automatisch naar iedere aanmelder individueel? Zo ja, wat moet ik daarvoor doen (toevoegen of maken?)
Http://php.net/mail (Example #1)
Kijk eens naar Gewijzigd op 24/01/2018 09:28:04 door - Ariën -
Kan ik die codering toevoegen in mijn php bestand of moet ik een aparte php maken?
Dat kan je gewoon onder het andere mailscript van lijn 77 zetten.
Ik ga er mee aan de slag! Thnx
Hopelijk lukt het, geef anders even een gil.
BCC is gelukt! Super bedankt voor de hulp.