Juiste manier van versturen formulier!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kees Mulder

Kees Mulder

19/01/2023 16:30:14
Quote Anchor link
Ik heb een formulier en als iemand die verstuurd dan krijg ik dit binnen.

Dit is mijn vraag.\r\nDit is mijn opmerkingen.\r\nIk heet Kees van \'t Hek.

Alleen wil ik die \r\n niet zien en die \ voor 't. Hoe kan ik dit oplossen. In mijn script gebruik ik de post:

$message = mysqli_real_escape_string($conn, $_POST['message']);

Hoe kan ik dit oplossen?
 
PHP hulp

PHP hulp

18/04/2024 16:44:32
 
- Ariën  -
Beheerder

- Ariën -

19/01/2023 17:00:37
Quote Anchor link
De vraag is wat je daarna precies doet?

Het feit dat je in je query een \ voor de apostrof ziet is juist. Maar die zou je nooit in je output mogen zien.
Ook die \r\n zou je niet mogen zien.

Dus wat doe je nog meer? Ergens lijkt daar iets fout te gaan.
 
Kees Mulder

Kees Mulder

19/01/2023 17:07:10
Quote Anchor link
Deze waarde worden in een html mail verstuurt. Daarbij gebruik ik dan '.$message.'.
 
Ozzie PHP

Ozzie PHP

19/01/2023 17:10:44
Quote Anchor link
mysqli_real_escape_string gebruik je om data op te slaan in een database. Niet om mails te versturen.
 
- Ariën  -
Beheerder

- Ariën -

19/01/2023 17:12:35
Quote Anchor link
Zoals ik zei: Vertel eens meer over wat je doet. Hoe meer regels met uitleg, code en context, hoe beter we kunnen helpen.
Gewijzigd op 19/01/2023 17:12:50 door - Ariën -
 
Kees Mulder

Kees Mulder

19/01/2023 20:17:26
Quote Anchor link
Dit is wat ik heb aan code:

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
<?php

    if(!empty($_POST['name']) && !empty($_POST['email'])){
        
        $name = mysqli_real_escape_string($conn, $_POST['name']);
    $email = mysqli_real_escape_string($conn, $_POST['email']);
    $message = mysqli_real_escape_string($conn, $_POST['message']);

    // Onderwerp van je bericht
    $subject = 'Je aanvraag is goed ontvangen! Aanvraag: #'.$aanvraag_id.'';
    // Een korte benaming voor jouw website
    $website_naam = 'Het Sprekersburo';
    // Jouw eigen geldige emailadres
    $eigen_emailadres = '[email protected]';
    // Een geldig emailadres of helemaal leeg laten
    $naam_verzender = $name;
    // Het geldige emailadres van de afzender
    $email_verzender = $email;
    // Een geldig emailadres of helemaal leeg laten    
    $bcc_emailadres = '[email protected]';
    // Een geldig emailadres voor errors
    $error_emailadres = '[email protected]';
    // TO
    $to = '[email protected]';
            
    // De headers samenstellen
    $headers = 'From: ' . $naam_verzender . ' <' . $email_verzender . '>' . "\r\n";
    $headers .= 'Reply-To: ' . $naam_verzender . ' <' . $email_verzender . '>' . "\r\n";
    $headers .= 'Return-Path: Mail-Error <' . $error_emailadres . '>' . "\r\n";
    $headers .= 'Bcc: ' . $naam_verzender . ' <' . $email_verzender . '>' . "\r\n";    
    /*
    $headers .= ($bcc_emailadres != '') ? 'Bcc: ' . $bcc_emailadres . PHP_EOL : ' . "\r\n";
    */
    // To send HTML mail, the Content-type header must be set

    $headers .= 'MIME-Version: 1.0' . "\r\n";
    $headers .= "Content-type: text/html; charset=utf-8\r\n";
    $headers .= "Content-Transfer-Encoding: 8bit\r\n";
    $headers .= 'X-Priority: Normal' . "\r\n";        
                        
              
    $body = '<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xmlns:o="urn:schemas-microsoft-com:office:office">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width,initial-scale=1">
  <meta name="x-apple-disable-message-reformatting">
  <title></title>
  <!--[if mso]>
  <noscript>
    <xml>
      <o:OfficeDocumentSettings>
        <o:PixelsPerInch>96</o:PixelsPerInch>
      </o:OfficeDocumentSettings>
    </xml>
  </noscript>
  <![endif]-->
  <style>
    table, td, div, h1, p, a {font-family: Tahoma, Verdana, Segoe, sans-serif; font-size: 14px;line-height: 22px; color: #000000;}
  </style>  
</head>

<body>

<p>Naam: '
.$name.'<br />
E-mailadres: '
.$email.'<br />
Bericht: '
.$message.'</p>

</body>


</html>'
;                
    
                
                // Send email to Admin
                @mail($to, $subject, $body, $headers);
                
?>
 
- Ariën  -
Beheerder

- Ariën -

19/01/2023 20:31:46
Quote Anchor link
En je query?
 
Ivo P

Ivo P

19/01/2023 21:21:10
Quote Anchor link
in plaats van mysqli_real_escape_srring() had je htmlspecialchars() moeten gebruiken.

en je moet natuurlijk een controle inbouwen of het opgegeven emailadres wel iets bevat dat lijkt op een emailadres.



Toevoeging op 19/01/2023 21:25:12:

en het fromadres moet iets zijn dat bij jouw website hoort. Dat is de afzender. Replyto klopt wel.

Toevoeging op 20/01/2023 09:32:59:

bovenaan kun je gebruiken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
   $name
= filter_input(INPUT_POST, 'name');
   $email = filter_input(INPUT_POST, 'email',  FILTER_SANITIZE_EMAIL);
   $message = filter_input(INPUT_POST, 'message');
?>


Daarmee weet je zeker dan $email alleen maar 1 mailadres bevat (of niets). En dat daar vooral niet 400 adressen om te spammen. en zeker geen extra emailheaders.

Een controle " if($email) " is op zijn plaats uiteraard, aangezien je anders geen mail kunt versturen.

Onderaan in je mailbericht moet je nog volgende aanpassen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php

$body
= '.....
<p>Naam: '
. htmlspecialchars($name).'<br />
E-mailadres: '
.htmlspecialchars($email).'<br />
Bericht: '
. nl2br(htmlspecialchars($message)).'</p>

....'
;
?>
Gewijzigd op 20/01/2023 09:33:52 door Ivo P
 



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.