graag verificatie van dit script
Gezien ik absoluut niks ken van php, heb ik na opzoeking een code gevonden (formulier met multiple uploads). Maar ik ben niet zeker of het solide en betrouwbaar is, want sommige klanten melden me dat ze wel op de bedankpagina komen, maar ik ontvang hun mail niet.
Kan iemand de onderstaande code nakijken en toevoegen wat nodig is om de code met een gerust hart online te plaatsen?
Dankje.
Quote:
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
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
<?php
// append data to a log file
function _log($log_file,$ip,$email,$message)
{
$str = date('Y-m-d H:i:s') . " IP:$ip, EM:$email, $message\n";
file_put_contents($log_file,$str,FILE_APPEND);
}
$log_file = 'log.txt'; // log text file name
$ip = $_SERVER['REMOTE_ADDR']; // get ip to short variable name for logging purposes
$to = "[email protected]";
$subject= "inschrijving";
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$website = $_POST['website'];
$beschrijving = $_POST['beschrijving'];
$socialURL = $_POST['socialURL'];
$cmname = $_POST['cmname'];
$faciliteit = $_POST['faciliteit'];
$add = $_POST['add'];
$city = $_POST['city'];
$zip = $_POST['zip'];
$keywords1 = $_POST['keywords1'];
$keywords2 = $_POST['keywords2'];
$keywords3 = $_POST['keywords3'];
$keywords4 = $_POST['keywords4'];
$keywords5 = $_POST['keywords5'];
$keywords6 = $_POST['keywords6'];
$prijslijst = $_POST['prijslijst'];
$openingsuren = $_POST['openingsuren'];
$klikbaar = $_POST['klikbaar'];
$socialFB = $_POST['socialFB'];
$socialTW = $_POST['socialTW'];
$socialIN = $_POST['socialIN'];
$socialGP = $_POST['socialGP'];
$opmerking = $_POST['opmerking'];
$message = "
Faciliteit: $faciliteit
Naam bedrijf: $cmname
Adres: $add, $zip $city
Beschrijving:
$beschrijving
Video:
$socialURL
Kernwoorden:
$keywords1
$keywords2
$keywords3
$keywords4
$keywords5
$keywords6
Prijslijst:
$prijslijst
Openklikbare tekst:
$klikbaar
Contactpersoon: $name
Telefoon: $phone
Email: $email
Website: $website
Openingsuren:
$openingsuren
Facebook: $socialFB
Instagram: $socialIN
Twitter: $socialTW
Google Plus: $socialGP
Verdere opmerkingen:
$opmerking
";
$mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";
$headers = "From: $email\r\n" .
"MIME-Version: 1.0\r\n" .
"Content-Type: multipart/mixed;\r\n" .
" boundary=\"{$mime_boundary}\"";
$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";
foreach($_FILES as $userfile)
{
$tmp_name = $userfile['tmp_name'];
$type = $userfile['type'];
$name = $userfile['name'];
$size = $userfile['size'];
if (file_exists($tmp_name))
{
if(is_uploaded_file($tmp_name))
{
$file = fopen($tmp_name,'rb');
$data = fread($file,filesize($tmp_name));
fclose($file);
$data = chunk_split(base64_encode($data));
}
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$type};\n" .
" name=\"{$name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n";
}
}
$message.="--{$mime_boundary}--\n";
if(mail($to, $subject, $message, $headers))
{
echo "Dankje om je gegevens door te zenden.<br>We nemen die door en contacteren je zo snel mogelijk.";
_log($log_file,$ip,$email,'Mail call successful.');
} else {
echo "Error in mail.<br>Probeer opnieuw door hieronder te klikken.";
$last_error = error_get_last();
_log($log_file,$ip,$email,"Mail call failed - {$last_error['message']}");
}
?>
// append data to a log file
function _log($log_file,$ip,$email,$message)
{
$str = date('Y-m-d H:i:s') . " IP:$ip, EM:$email, $message\n";
file_put_contents($log_file,$str,FILE_APPEND);
}
$log_file = 'log.txt'; // log text file name
$ip = $_SERVER['REMOTE_ADDR']; // get ip to short variable name for logging purposes
$to = "[email protected]";
$subject= "inschrijving";
$name = $_POST['name'];
$phone = $_POST['phone'];
$email = $_POST['email'];
$website = $_POST['website'];
$beschrijving = $_POST['beschrijving'];
$socialURL = $_POST['socialURL'];
$cmname = $_POST['cmname'];
$faciliteit = $_POST['faciliteit'];
$add = $_POST['add'];
$city = $_POST['city'];
$zip = $_POST['zip'];
$keywords1 = $_POST['keywords1'];
$keywords2 = $_POST['keywords2'];
$keywords3 = $_POST['keywords3'];
$keywords4 = $_POST['keywords4'];
$keywords5 = $_POST['keywords5'];
$keywords6 = $_POST['keywords6'];
$prijslijst = $_POST['prijslijst'];
$openingsuren = $_POST['openingsuren'];
$klikbaar = $_POST['klikbaar'];
$socialFB = $_POST['socialFB'];
$socialTW = $_POST['socialTW'];
$socialIN = $_POST['socialIN'];
$socialGP = $_POST['socialGP'];
$opmerking = $_POST['opmerking'];
$message = "
Faciliteit: $faciliteit
Naam bedrijf: $cmname
Adres: $add, $zip $city
Beschrijving:
$beschrijving
Video:
$socialURL
Kernwoorden:
$keywords1
$keywords2
$keywords3
$keywords4
$keywords5
$keywords6
Prijslijst:
$prijslijst
Openklikbare tekst:
$klikbaar
Contactpersoon: $name
Telefoon: $phone
Email: $email
Website: $website
Openingsuren:
$openingsuren
Facebook: $socialFB
Instagram: $socialIN
Twitter: $socialTW
Google Plus: $socialGP
Verdere opmerkingen:
$opmerking
";
$mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";
$headers = "From: $email\r\n" .
"MIME-Version: 1.0\r\n" .
"Content-Type: multipart/mixed;\r\n" .
" boundary=\"{$mime_boundary}\"";
$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";
foreach($_FILES as $userfile)
{
$tmp_name = $userfile['tmp_name'];
$type = $userfile['type'];
$name = $userfile['name'];
$size = $userfile['size'];
if (file_exists($tmp_name))
{
if(is_uploaded_file($tmp_name))
{
$file = fopen($tmp_name,'rb');
$data = fread($file,filesize($tmp_name));
fclose($file);
$data = chunk_split(base64_encode($data));
}
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$type};\n" .
" name=\"{$name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n";
}
}
$message.="--{$mime_boundary}--\n";
if(mail($to, $subject, $message, $headers))
{
echo "Dankje om je gegevens door te zenden.<br>We nemen die door en contacteren je zo snel mogelijk.";
_log($log_file,$ip,$email,'Mail call successful.');
} else {
echo "Error in mail.<br>Probeer opnieuw door hieronder te klikken.";
$last_error = error_get_last();
_log($log_file,$ip,$email,"Mail call failed - {$last_error['message']}");
}
?>
Tevens zou ik eens kijken naar de headers:
http://wiki.phpbeginners.nl/index.php?title=De_juiste_mailheaders, maar vergeet niet je headers toe te voegen voor je attachments.
Dus dit er nog bij plakken:
// Geef GELDIGE adressen op
// Een korte benaming voor jouw website
$website_naam = 'Mijn Site';
// Jouw eigen geldige emailadres
$eigen_emailadres = 'mijn_emailadres@mijn_domein.nl';
// Een geldig emailadres voor errors
$error_emailadres = 'mijn_emailadres@mijn_domein.nl';
// De naam van de verzender
$naam_verzender = 'Afzender';
// Het geldige emailadres van de afzender
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
// Een geldig emailadres of helemaal leeg laten
$bcc_emailadres = 'geldig_emailadres@geldig_domein.nl';
// HTML mail? True/False
$html = true;
// De headers samenstellen
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . "\r\n";
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . "\r\n";
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . "\r\n";
$headers .= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . "\r\n" : '';
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Priority: Normal' . "\r\n";
$headers .= ($html) ? 'MIME-Version: 1.0' . "\r\n" : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . "\r\n" : '';
Maar wie is dan verzender en afzender? Dat kan ik toch niet weten wie mij een bericht stuurt?
(valt het op dat ik niks van php - en nog vele andere dingen- ken?)
Bruintje Negrito op 05/03/2018 11:23:23:
Dankje voor je reactie, maar alles wat tussen regel 16 en 40 staat, is de inhoud van het ingevulde formulier.
Bijna goed. Dat is juist een kopie, en die is nergens voor nodig. In de mail kan je die $_POST-variabelen ook gewoon gebruiken.
Over je afzender en de verzender:
$naam_verzender en $email_verzender zijn de naam en het mailadres van diegene die het formulier instuurt.
$website_naam = 'Mijn Site';
$eigen_emailadres = 'mijn_emailadres@mijn_domein.nl';
$error_emailadres = 'mijn_emailadres@mijn_domein.nl';
En wat bedoel je met $_POST-variabelen ?
Kan ik regel 16 tot 40 dan zo plaatsen:
$_POST['name'];
$_POST['phone'];
$_POST['email'];
$_POST['website'];
$_POST['beschrijving'];
(enz)
Kan je me tonen hoe het volledige script er dan zou uitzien, met je aanpassingen en toevoegingen?
Toevoeging op 05/03/2018 11:42:08:
Zoiets?
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
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
<?php
// append data to a log file
function _log($log_file,$ip,$email,$message)
{
$str = date('Y-m-d H:i:s') . " IP:$ip, EM:$email, $message\n";
file_put_contents($log_file,$str,FILE_APPEND);
}
$log_file = 'log.txt'; // log text file name
$ip = $_SERVER['REMOTE_ADDR']; // get ip to short variable name for logging purposes
$website_naam = 'Mijn Site';
$eigen_emailadres = '[email protected]';
$error_emailadres = '[email protected]';
$naam_verzender = 'Afzender';
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
$bcc_emailadres = '[email protected]';
$html = true;
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . "\r\n";
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . "\r\n";
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . "\r\n";
$headers .= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . "\r\n" : '';
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Priority: Normal' . "\r\n";
$headers .= ($html) ? 'MIME-Version: 1.0' . "\r\n" : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . "\r\n" : '';
$to = "[email protected]";
$subject= "inschrijving";
$_POST['name'];
$_POST['phone'];
$_POST['email'];
$_POST['website'];
$_POST['beschrijving'];
$_POST['socialURL'];
$_POST['cmname'];
$_POST['faciliteit'];
$_POST['add'];
$_POST['city'];
$_POST['zip'];
$_POST['keywords1'];
$_POST['keywords2'];
$_POST['keywords3'];
$_POST['keywords4'];
$_POST['keywords5'];
$_POST['keywords6'];
$_POST['prijslijst'];
$_POST['openingsuren'];
$_POST['klikbaar'];
$_POST['socialFB'];
$_POST['socialTW'];
$_POST['socialIN'];
$_POST['socialGP'];
$_POST['opmerking'];
$message = "
Faciliteit: $faciliteit
Naam bedrijf: $cmname
Adres: $add, $zip $city
Beschrijving:
$beschrijving
Video:
$socialURL
Kernwoorden:
$keywords1
$keywords2
$keywords3
$keywords4
$keywords5
$keywords6
Prijslijst:
$prijslijst
Openklikbare tekst:
$klikbaar
Contactpersoon: $name
Telefoon: $phone
Email: $email
Website: $website
Openingsuren:
$openingsuren
Facebook: $socialFB
Instagram: $socialIN
Twitter: $socialTW
Google Plus: $socialGP
Verdere opmerkingen:
$opmerking
";
$mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";
$headers = "From: $email\r\n" .
"MIME-Version: 1.0\r\n" .
"Content-Type: multipart/mixed;\r\n" .
" boundary=\"{$mime_boundary}\"";
$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";
foreach($_FILES as $userfile)
{
$tmp_name = $userfile['tmp_name'];
$type = $userfile['type'];
$name = $userfile['name'];
$size = $userfile['size'];
if (file_exists($tmp_name))
{
if(is_uploaded_file($tmp_name))
{
$file = fopen($tmp_name,'rb');
$data = fread($file,filesize($tmp_name));
fclose($file);
$data = chunk_split(base64_encode($data));
}
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$type};\n" .
" name=\"{$name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n";
}
}
$message.="--{$mime_boundary}--\n";
if(mail($to, $subject, $message, $headers))
{
echo "Dankje om je gegevens door te zenden.<br>We nemen die door en contacteren je zo snel mogelijk.";
_log($log_file,$ip,$email,'Mail call successful.');
} else {
echo "Error in mail.<br>Probeer opnieuw door hieronder te klikken.";
$last_error = error_get_last();
_log($log_file,$ip,$email,"Mail call failed - {$last_error['message']}");
}
?>
// append data to a log file
function _log($log_file,$ip,$email,$message)
{
$str = date('Y-m-d H:i:s') . " IP:$ip, EM:$email, $message\n";
file_put_contents($log_file,$str,FILE_APPEND);
}
$log_file = 'log.txt'; // log text file name
$ip = $_SERVER['REMOTE_ADDR']; // get ip to short variable name for logging purposes
$website_naam = 'Mijn Site';
$eigen_emailadres = '[email protected]';
$error_emailadres = '[email protected]';
$naam_verzender = 'Afzender';
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
$bcc_emailadres = '[email protected]';
$html = true;
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . "\r\n";
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . "\r\n";
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . "\r\n";
$headers .= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . "\r\n" : '';
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Priority: Normal' . "\r\n";
$headers .= ($html) ? 'MIME-Version: 1.0' . "\r\n" : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . "\r\n" : '';
$to = "[email protected]";
$subject= "inschrijving";
$_POST['name'];
$_POST['phone'];
$_POST['email'];
$_POST['website'];
$_POST['beschrijving'];
$_POST['socialURL'];
$_POST['cmname'];
$_POST['faciliteit'];
$_POST['add'];
$_POST['city'];
$_POST['zip'];
$_POST['keywords1'];
$_POST['keywords2'];
$_POST['keywords3'];
$_POST['keywords4'];
$_POST['keywords5'];
$_POST['keywords6'];
$_POST['prijslijst'];
$_POST['openingsuren'];
$_POST['klikbaar'];
$_POST['socialFB'];
$_POST['socialTW'];
$_POST['socialIN'];
$_POST['socialGP'];
$_POST['opmerking'];
$message = "
Faciliteit: $faciliteit
Naam bedrijf: $cmname
Adres: $add, $zip $city
Beschrijving:
$beschrijving
Video:
$socialURL
Kernwoorden:
$keywords1
$keywords2
$keywords3
$keywords4
$keywords5
$keywords6
Prijslijst:
$prijslijst
Openklikbare tekst:
$klikbaar
Contactpersoon: $name
Telefoon: $phone
Email: $email
Website: $website
Openingsuren:
$openingsuren
Facebook: $socialFB
Instagram: $socialIN
Twitter: $socialTW
Google Plus: $socialGP
Verdere opmerkingen:
$opmerking
";
$mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";
$headers = "From: $email\r\n" .
"MIME-Version: 1.0\r\n" .
"Content-Type: multipart/mixed;\r\n" .
" boundary=\"{$mime_boundary}\"";
$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";
foreach($_FILES as $userfile)
{
$tmp_name = $userfile['tmp_name'];
$type = $userfile['type'];
$name = $userfile['name'];
$size = $userfile['size'];
if (file_exists($tmp_name))
{
if(is_uploaded_file($tmp_name))
{
$file = fopen($tmp_name,'rb');
$data = fread($file,filesize($tmp_name));
fclose($file);
$data = chunk_split(base64_encode($data));
}
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$type};\n" .
" name=\"{$name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n";
}
}
$message.="--{$mime_boundary}--\n";
if(mail($to, $subject, $message, $headers))
{
echo "Dankje om je gegevens door te zenden.<br>We nemen die door en contacteren je zo snel mogelijk.";
_log($log_file,$ip,$email,'Mail call successful.');
} else {
echo "Error in mail.<br>Probeer opnieuw door hieronder te klikken.";
$last_error = error_get_last();
_log($log_file,$ip,$email,"Mail call failed - {$last_error['message']}");
}
?>
Is het niet een idee of om zelf PHP te leren? Anders lijkt me dit meer een (vrijwillige?) vacature waard als iemand dit script moet aanpassen. Dit kan in het Vacature-forum op de site. Lees wel dan even de daar geldende regels.
Even wat anders. Ik wil je er wel op attenderen dat je jouw mailadres op dit forum deelt. Ik weet niet of je hier van bewust bent, maar dit kan opgepikt worden door spam-botjes.
Dit formulier is het enige dat ik nodig heb in php; de rest van de site (html, css en js) heb ik zelf afgewerkt.
Dit is niet mijn mailadres. Maar misschien bestaat het.
Gewijzigd op 05/03/2018 11:55:57 door Bruintje Negrito
Verder zijn je headers deels dubbel.
Als je het zelf wil aanpakken zou een tutorial PHP zeker volstaan, en anders zou ik het laten utibesteden via een topic in het Vacatureforum.
Ik verwijder dit:
$headers = "From: $email\r\n" .
"MIME-Version: 1.0\r\n" .
En dan wordt dit het uiteindelijk werkende formulier:
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
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
<?php
// append data to a log file
function _log($log_file,$ip,$email,$message)
{
$str = date('Y-m-d H:i:s') . " IP:$ip, EM:$email, $message\n";
file_put_contents($log_file,$str,FILE_APPEND);
}
$log_file = 'log.txt'; // log text file name
$ip = $_SERVER['REMOTE_ADDR']; // get ip to short variable name for logging purposes
$website_naam = 'Mijn Site';
$eigen_emailadres = '[email protected]';
$error_emailadres = '[email protected]';
$naam_verzender = 'Afzender';
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
$bcc_emailadres = '[email protected]';
$html = true;
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . "\r\n";
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . "\r\n";
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . "\r\n";
$headers .= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . "\r\n" : '';
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Priority: Normal' . "\r\n";
$headers .= ($html) ? 'MIME-Version: 1.0' . "\r\n" : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . "\r\n" : '';
$headers .= ($html) ? "Content-Type: multipart/mixed;\r\n" .
$headers .= ($html) ? "boundary=\"{$mime_boundary}\"";
$to = "[email protected]";
$subject= "inschrijving";
$_POST['name'];
$_POST['phone'];
$_POST['email'];
$_POST['website'];
$_POST['beschrijving'];
$_POST['socialURL'];
$_POST['cmname'];
$_POST['faciliteit'];
$_POST['add'];
$_POST['city'];
$_POST['zip'];
$_POST['keywords1'];
$_POST['keywords2'];
$_POST['keywords3'];
$_POST['keywords4'];
$_POST['keywords5'];
$_POST['keywords6'];
$_POST['prijslijst'];
$_POST['openingsuren'];
$_POST['klikbaar'];
$_POST['socialFB'];
$_POST['socialTW'];
$_POST['socialIN'];
$_POST['socialGP'];
$_POST['opmerking'];
$message = "
Faciliteit: $_POST['faciliteit'];
Naam bedrijf: $_POST['cmname'];
Adres: $_POST['add']; $_POST['zip']; $_POST['city'];
Beschrijving:
$_POST['beschrijving'];
Video:
$_POST['socialURL'];
Kernwoorden:
$_POST['keywords1'];
$_POST['keywords2'];
$_POST['keywords3'];
$_POST['keywords4'];
$_POST['keywords5'];
$_POST['keywords6'];
Prijslijst:
$_POST['prijslijst'];
Openklikbare tekst:
$_POST['klikbaar'];
Contactpersoon: $_POST['name'];
Telefoon: $_POST['phone'];
Email: $_POST['email'];
Website: $_POST['website'];
Openingsuren:
$_POST['openingsuren'];
Facebook: $_POST['socialFB'];
Instagram: $_POST['socialIN'];
Twitter: $_POST['socialTW'];
Google Plus: $_POST['socialGP'];
Verdere opmerkingen:
$_POST['opmerking'];
";
$mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";
$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";
foreach($_FILES as $userfile)
{
$tmp_name = $userfile['tmp_name'];
$type = $userfile['type'];
$name = $userfile['name'];
$size = $userfile['size'];
if (file_exists($tmp_name))
{
if(is_uploaded_file($tmp_name))
{
$file = fopen($tmp_name,'rb');
$data = fread($file,filesize($tmp_name));
fclose($file);
$data = chunk_split(base64_encode($data));
}
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$type};\n" .
" name=\"{$name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n";
}
}
$message.="--{$mime_boundary}--\n";
if(mail($to, $subject, $message, $headers))
{
echo "Dankje om je gegevens door te zenden.<br>We nemen die door en contacteren je zo snel mogelijk.";
_log($log_file,$ip,$email,'Mail call successful.');
} else {
echo "Error in mail.<br>Probeer opnieuw door hieronder te klikken.";
$last_error = error_get_last();
_log($log_file,$ip,$email,"Mail call failed - {$last_error['message']}");
}
?>
// append data to a log file
function _log($log_file,$ip,$email,$message)
{
$str = date('Y-m-d H:i:s') . " IP:$ip, EM:$email, $message\n";
file_put_contents($log_file,$str,FILE_APPEND);
}
$log_file = 'log.txt'; // log text file name
$ip = $_SERVER['REMOTE_ADDR']; // get ip to short variable name for logging purposes
$website_naam = 'Mijn Site';
$eigen_emailadres = '[email protected]';
$error_emailadres = '[email protected]';
$naam_verzender = 'Afzender';
$email_verzender = 'emailadres_van_verzender@zijn_domein.nl';
$bcc_emailadres = '[email protected]';
$html = true;
$headers = 'From: ' . $website_naam . ' <' . $eigen_emailadres . '>' . "\r\n";
$headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . "\r\n";
$headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . "\r\n";
$headers .= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . "\r\n" : '';
$headers .= 'X-Mailer: PHP/' . phpversion() . "\r\n";
$headers .= 'X-Priority: Normal' . "\r\n";
$headers .= ($html) ? 'MIME-Version: 1.0' . "\r\n" : '';
$headers .= ($html) ? 'Content-type: text/html; charset=iso-8859-1' . "\r\n" : '';
$headers .= ($html) ? "Content-Type: multipart/mixed;\r\n" .
$headers .= ($html) ? "boundary=\"{$mime_boundary}\"";
$to = "[email protected]";
$subject= "inschrijving";
$_POST['name'];
$_POST['phone'];
$_POST['email'];
$_POST['website'];
$_POST['beschrijving'];
$_POST['socialURL'];
$_POST['cmname'];
$_POST['faciliteit'];
$_POST['add'];
$_POST['city'];
$_POST['zip'];
$_POST['keywords1'];
$_POST['keywords2'];
$_POST['keywords3'];
$_POST['keywords4'];
$_POST['keywords5'];
$_POST['keywords6'];
$_POST['prijslijst'];
$_POST['openingsuren'];
$_POST['klikbaar'];
$_POST['socialFB'];
$_POST['socialTW'];
$_POST['socialIN'];
$_POST['socialGP'];
$_POST['opmerking'];
$message = "
Faciliteit: $_POST['faciliteit'];
Naam bedrijf: $_POST['cmname'];
Adres: $_POST['add']; $_POST['zip']; $_POST['city'];
Beschrijving:
$_POST['beschrijving'];
Video:
$_POST['socialURL'];
Kernwoorden:
$_POST['keywords1'];
$_POST['keywords2'];
$_POST['keywords3'];
$_POST['keywords4'];
$_POST['keywords5'];
$_POST['keywords6'];
Prijslijst:
$_POST['prijslijst'];
Openklikbare tekst:
$_POST['klikbaar'];
Contactpersoon: $_POST['name'];
Telefoon: $_POST['phone'];
Email: $_POST['email'];
Website: $_POST['website'];
Openingsuren:
$_POST['openingsuren'];
Facebook: $_POST['socialFB'];
Instagram: $_POST['socialIN'];
Twitter: $_POST['socialTW'];
Google Plus: $_POST['socialGP'];
Verdere opmerkingen:
$_POST['opmerking'];
";
$mime_boundary="==Multipart_Boundary_x".md5(mt_rand())."x";
$message = "This is a multi-part message in MIME format.\n\n" .
"--{$mime_boundary}\n" .
"Content-Type: text/plain; charset=\"iso-8859-1\"\n" .
"Content-Transfer-Encoding: 7bit\n\n" .
$message . "\n\n";
foreach($_FILES as $userfile)
{
$tmp_name = $userfile['tmp_name'];
$type = $userfile['type'];
$name = $userfile['name'];
$size = $userfile['size'];
if (file_exists($tmp_name))
{
if(is_uploaded_file($tmp_name))
{
$file = fopen($tmp_name,'rb');
$data = fread($file,filesize($tmp_name));
fclose($file);
$data = chunk_split(base64_encode($data));
}
$message .= "--{$mime_boundary}\n" .
"Content-Type: {$type};\n" .
" name=\"{$name}\"\n" .
"Content-Disposition: attachment;\n" .
" filename=\"{$fileatt_name}\"\n" .
"Content-Transfer-Encoding: base64\n\n" .
$data . "\n\n";
}
}
$message.="--{$mime_boundary}--\n";
if(mail($to, $subject, $message, $headers))
{
echo "Dankje om je gegevens door te zenden.<br>We nemen die door en contacteren je zo snel mogelijk.";
_log($log_file,$ip,$email,'Mail call successful.');
} else {
echo "Error in mail.<br>Probeer opnieuw door hieronder te klikken.";
$last_error = error_get_last();
_log($log_file,$ip,$email,"Mail call failed - {$last_error['message']}");
}
?>
Ik durf dit niet zelf aan te pakken, want de site staat of valt met dit formulier, vandaar.
Is dit nu een multiple upload formulier dat garandeert dat ik de mails binnenkrijg (enkel nog mailadres veranderen)?
Gewijzigd op 05/03/2018 12:11:59 door Bruintje Negrito
Zonder kennis van PHP wordt het lastig om er in te werken.
Gewijzigd op 05/03/2018 12:12:18 door - Ariën -
Is de laatste versie ok voor je?
Ik heb die kennis wel, maar dat wil niet zeggen dat ik nu tijd heb om je hele script te doorlopen, en hier te plaatsen. Plus dat voor dergelijke verzoeken het Vacature-forum bedoeld is, omdat je blijkbaar iemand zoekt.
Dankje voor je inspanning, Ariën.
Ik hoop dat je dit begrijpt. Ik zal er anders later even naar kijken, of iemand anders mag zijn licht er op schijnen.
Gewijzigd op 05/03/2018 12:44:10 door - Ariën -
Veel plezier op het werk!
Bruintje Negrito op 05/03/2018 10:37:36:
Maar ik ben niet zeker of het solide en betrouwbaar is, want sommige klanten melden me dat ze wel op de bedankpagina komen, maar ik ontvang hun mail niet.
Sja, dat is het nadeel van e-mail, zelfs als je iets succesvol verstuurt is het geen garantie voor ontvangst. Heb je gecontroleerd of deze mail misschien onderschept wordt door een spamfilter of in de spambox zit?
Daarnaast, wat voor attachments worden verstuurd?
Komen alle attachments goed aan (als de mail uberhaupt aankomt lol)?
Mogelijke gotcha: chunk_split voegt ook een \r\n aan het einde toe.
Het script is inconsistent bij regelovergangen: de ene keer \n, de andere keer \r\n.
Enne, log.txt staat in hetzelfde pad als dit script? Dus dit bestand is gewoon op te roepen en te downloaden? Dat lijkt mij niet de bedoeling.
Ook zou je eens naar de broncode van het verstuurde mailtje in verschillende vormen (0 attachments, 1 attachment, meerdere attachments) kunnen kijken of dat er allemaal wel snor uitziet. En dan eens kijken hoe het komt dat sommige mailtjes niet aankomen. Dat laatste lijkt mij wel een showstopper.
EDIT: je zou natuurlijk altijd een kopie kunnen opslaan die buiten e-mail omgaat zodat je een historie hebt van verstuurde mail. En/of een (B)CC kunnen sturen naar de afzender. Dit zodat je altijd ergens een versie van het verstuurde bericht hebt waar je aan kunt refereren. Nu heb je niets als het af en toe aan jouw kant in de papierversnipperaar verdwijnt. Maar aangezien het GMail is, kijk eens in je spamfolder.
Gewijzigd op 05/03/2018 16:15:17 door Thomas van den Heuvel
Wanneer de mail toekomt, is dit altijd met het aantal opgeladen afbeeldingen.
- "gotcha: chunk_split" : begrijp ik niet
- "de ene keer \n, de andere keer \r\n": is dit belangrijk voor de werking?
- "log.txt": dit staat in de code, maar geen idee wat ik ermee moet doen en wat de functie ervan is.
Welke info kan ik uit de broncode halen die helpt om dit formulier optimaal te krijgen?
En gmail is hier in de testcode; ik gebruik een andere mailserver.
Gewijzigd op 05/03/2018 15:47:59 door Bruintje Negrito
Over de slashes. Ik zou gewoon consistent net als het blok met $headers een \r\n gebruiken.
Verder klopt regel 104 niet. Dat is toch niet de tekst die je in je mail aan de lezer wilt voorschotelen?
Dit is ook een $header namelijk, maar dan moet je hem wel samenvoegen met de andere variabele door
$headers .=
te gebruiken.
En in het verzenden van de mail met attachments heb ik nog nooit de tekst van regel 104 zien verschijnen, dus geen idee wat die daar staat te blinken.
De reden dat de mails niet aankomen kan veel oorzaken hebben. Het kan ook liggen aan de inrichting van de mailserver of zelfs de DNS. Probeer eens uit te zoeken wat wel en niet aankomt, en of je er een verband in vindt. Denk aan hotmail, live, gmail
domeinenen.
Misschien is het wel zo handig om al je headers eens netjes te groeperen in plaats dat ze her en der in je code staan.
Gewijzigd op 05/03/2018 16:21:13 door - Ariën -
Quote:
- "gotcha: chunk_split" : begrijp ik niet
Je attachments worden base64 geëncodeerd, en vervolgens in blokken van (standaard) 76 karakters gesplitst. Dit om aan de standaarden (RFC's) van (MIME-)mail te voldoen. chunk_split() is de functie die alles in partjes splitst, en stopt hier (standaard) "\r\n" (dus regelovergangen) als "lijm" tussen. Echter, chunk_split() zet ook een "\r\n" achter de laatste base64-regel, wat dus eigenlijk niet klopt. Voor de goede orde zou deze getrimd moeten worden.
Quote:
- "de ene keer \n, de andere keer \r\n": is dit belangrijk voor de werking?
Sommige mailservers (en misschien ook tussenstations?) zijn hier héél gevoelig voor. Het beste is eigenlijk om een regelovergangs-constante te definiëren, en deze overal te gebruiken. Initieel zou je deze als "\r\n" kunnen definiëren, en als dit niet werkt kun je deze boem in een keer aanpassen naar "\n".
Quote:
- "log.txt": dit staat in de code, maar geen idee wat ik ermee moet doen en wat de functie ervan is.
Dit is een soort van manifest die gebeurtenissen registreert. Dit is in het algemeen handig, maar ook in het bijzonder wanneer er mail lijkt te verdwijnen, je kunt dan nagaan dat e-mail ook daadwerkelijk is verstuurd op het moment dat men zegt dat deze verstuurd is.
Oh, nog iets wat mij te binnen schoot: je gebruikt de character encoding "iso-8859-1", maar wat gebruikt jouw website waarin dit formulier zit? Dit is van invloed op je $_POST data en daarmee dus ook of deze data correct wordt weergegeven in je mail. Indien je website of formulier een andere character encoding gebruikt dan kun je niet verwachten dat dit in een "iso-8859-1" setting goed wordt weergegeven.