graag verificatie van dit script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Bruintje Negrito

Bruintje Negrito

05/03/2018 10:37:36
Quote Anchor link
Hey allen,

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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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']}");

        }

?>
 
PHP hulp

PHP hulp

24/12/2024 14:16:51
 
- Ariën  -
Beheerder

- Ariën -

05/03/2018 11:17:51
Quote Anchor link
Ik zou de gekopiëerde variabelen van regel 16 t.m 40 lekker weghalen. Want je hebt al de beschikking over deze $_POST-variabelen, dus waarom zou je ze nog kopiëren?

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.
 
Bruintje Negrito

Bruintje Negrito

05/03/2018 11:23:23
Quote Anchor link
Dankje voor je reactie, maar alles wat tussen regel 16 en 40 staat, is de inhoud van het ingevulde formulier.

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?)
 
- Ariën  -
Beheerder

- Ariën -

05/03/2018 11:29:35
Quote Anchor link
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.
 
Bruintje Negrito

Bruintje Negrito

05/03/2018 11:37:57
Quote Anchor link
Dus dit moet ik aanpassen naar mijn gegevens:
$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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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']}");

        }

?>
 
- Ariën  -
Beheerder

- Ariën -

05/03/2018 11:50:02
Quote Anchor link
Die $_POST variabelen moet je in je mail-inhoud gebruiken. In die variabelen staan ook de waardes die er ingevuld zijn.

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.
 
Bruintje Negrito

Bruintje Negrito

05/03/2018 11:55:06
Quote Anchor link
"Die $_POST variabelen moet je in je mail-inhoud gebruiken. In die variabelen staan ook de waardes die er ingevuld zijn." -> kan je dit toelichten, ajb? Bedoel je de id="" in html?
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
 
- Ariën  -
Beheerder

- Ariën -

05/03/2018 12:01:40
Quote Anchor link
Je moet de variabelen ($add, $zip, $city) die je nu gebruikt in je $message, dus vervangen door de $_POST-variabelen. Dan is je script meteen weer compacter, van ene hoop onnodig gekopieerde variabelen bevrijd.

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.
 
Bruintje Negrito

Bruintje Negrito

05/03/2018 12:10:26
Quote Anchor link
Begrepen. We zijn er dus bijna.

Ik verwijder dit:

$headers = "From: $email\r\n" .
"MIME-Version: 1.0\r\n" .


En dan wordt dit het uiteindelijk werkende formulier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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']}");

        }

?>


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
 
- Ariën  -
Beheerder

- Ariën -

05/03/2018 12:11:31
Quote Anchor link
Als je het niet zelf durft, dan raad ik aan mijn vorige post te lezen.
Zonder kennis van PHP wordt het lastig om er in te werken.
Gewijzigd op 05/03/2018 12:12:18 door - Ariën -
 
Bruintje Negrito

Bruintje Negrito

05/03/2018 12:13:57
Quote Anchor link
Die kennis heb jij toch? Goed bezig, zou ik zeggen ;-)
Is de laatste versie ok voor je?
 
- Ariën  -
Beheerder

- Ariën -

05/03/2018 12:18:43
Quote Anchor link
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.
 
Bruintje Negrito

Bruintje Negrito

05/03/2018 12:23:54
Quote Anchor link
Jammer dat je het nu laat liggen, terwijl ik net de indruk had dat we er bijna waren.
Dankje voor je inspanning, Ariën.
 
- Ariën  -
Beheerder

- Ariën -

05/03/2018 12:28:27
Quote Anchor link
Het punt is dat ik hier vrijwillig zit, en ik niet alle tijd heb. Ook werk gaat natuurlijk voor.
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 -
 
Bruintje Negrito

Bruintje Negrito

05/03/2018 12:52:36
Quote Anchor link
Graag tot later dan, Ariën.
Veel plezier op het werk!
 
Thomas van den Heuvel

Thomas van den Heuvel

05/03/2018 15:39:34
Quote Anchor link
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
 
Bruintje Negrito

Bruintje Negrito

05/03/2018 15:47:07
Quote Anchor link
Dankje voor je reactie, Thomas.
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
 
- Ariën  -
Beheerder

- Ariën -

05/03/2018 16:08:03
Quote Anchor link
Die log-file wordt gevuld zodra het formulier verstuurd wordt. Aan de hand of het wel of niet gelukt is kan je dat uit de log.txt herleiden. Echter zou ik dit niet openbaar zetten, en dan buiten de webroot (de map public_html, htdocs, www, o.i.d). Pas dan ook je pad aan naar dat bestand.

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.
 
Bruintje Negrito

Bruintje Negrito

05/03/2018 16:14:27
Quote Anchor link
Helpt die log.txt iets? Zorgt die ervoor dat mails wel zouden toekomen?
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.
 
- Ariën  -
Beheerder

- Ariën -

05/03/2018 16:19:28
Quote Anchor link
De log is zoals het al zegt, een 'logboek'.

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 -
 
Thomas van den Heuvel

Thomas van den Heuvel

05/03/2018 16:26:28
Quote Anchor link
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.
 

Pagina: 1 2 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.