Helpmij.nl
Helpmij.nl
Helpmij.nl

Quote

Weergeven resultaten 1 tot 16 van 16

Onderwerp: Recaptcha response in verzonden contactformulier verwijderen/verbergen

  1. #1
    Junior Member
    Geregistreerd
    29 maart 2020
    Vraag is niet opgelost

    Recaptcha response in verzonden contactformulier verwijderen/verbergen

    Beste,

    Kan iemand me tonen waar en welke code ik kan gebruiken om het g-recaptcha-response antwoord te verwijderen in de verzonden email?
    Zie voorbeeld email:

    Form submission:

    Name:
    Els

    Email:
    info@xxxxx.be

    Message:

    Test contactformulier website.


    G-recaptcha-response:
    03AHaCkAaH3A_6PHuUvYbs2gjCTJoDmb6_x0fvpcvhwNpG5fVCL_aNhj_y64IohvP2_BVuFKAdZH
    v7F6-O_aa5FGXIQLyu6gph-5STdqQ-JI5QOme6bFLEC3b6PpMex-do46D6yZQ-i8M7YAunJQ-mWF
    -vxFJJBZkStoZyOHBY47iBZmmTxj_mOMpL_emu9Ho2mMGCU6sLBGD16j77kCo6NmFP6aYqLpwPbC
    qd4cFv2hfanXmWDkSF57gwTASzfSrHbftdsgP4X6we3NhKqcBAHFQW8CTvERJtt9pHx2TYld_cUi
    4vGNJWsq5B-O6KPbboCt5a98-jzQ7Fa_LbN7gIrkYZno-0OMZ6CFXGTYKBVrsOMZ54DW-yjCOMyX
    sdPDxUbUvC2ubug2OC



    Hierbij de formhandler.php script:

    <?php
    namespace FormGuide\Handlx;
    use FormGuide\PHPFormValidator\FormValidator;
    use PHPMailer;
    use FormGuide\Handlx\Microtemplate;
    use Gregwar\Captcha\CaptchaBuilder;

    /**
    * FormHandler
    * A wrapper class that handles common form handling tasks
    * - handles Form validations using PHPFormValidator class
    * - sends email using PHPMailer
    * - can handle captcha validation
    * - can handle file uploads and attaching the upload to email
    *
    * ==== Sample usage ====
    * $fh = FormHandler::create()->validate(function($validator)
    * {
    * $validator->fields(['name','email'])
    * ->areRequired()->maxLength(50);
    * $validator->field('email')->isEmail();
    *
    * })->useMailTemplate(__DIR__.'/templ/email.php')
    * ->sendEmailTo('you@website.com');
    *
    * $fh->process($_POST);
    */
    class FormHandler
    {
    private $emails;
    public $validator;
    private $mailer;
    private $mail_template;
    private $captcha;
    private $attachments;
    private $recaptcha;

    public function __construct()
    {
    $this->emails = array();
    $this->validator = FormValidator::create();
    $this->mailer = new PHPMailer;
    $this->mail_template='';

    $this->mailer->Subject = "Contactformulier website De Vierschaar";

    $host = isset($_SERVER['SERVER_NAME'])?$_SERVER['SERVER_NAME']:'localhost';
    $from_email ='forms@'.$host;
    $this->mailer->setFrom($from_email,'Contactformulier website',false);

    $this->captcha = false;

    $this->attachments = [];

    $this->recaptcha =null;

    }

    /**
    * sendEmailTo: add a recipient email address
    * @param string/array $email_s one or more emails. If more than one emails, pass the emails as array
    * @return The form handler object itself so that the methods can be chained
    */
    public function sendEmailTo($email_s)
    {
    if(is_array($email_s))
    {
    $this->emails =array_merge($this->emails, $email_s);
    }
    else
    {
    $this->emails[] = $email_s;
    }

    return $this;
    }

    public function useMailTemplate($templ_path)
    {
    $this->mail_template = $templ_path;
    return $this;
    }

    /**
    * [attachFiles find the file uplods and attach to the email]
    * @param array $fields The array of field names
    */
    public function attachFiles($fields)
    {
    $this->attachments = array_merge($this->attachments, $fields);
    return $this;
    }

    public function getRecipients()
    {
    return $this->emails;
    }

    /**
    * [validate add Validations. This function takes a call back function which receives the PHPFormValidator object]
    * @param function $validator_fn The funtion gets a validator parameter using which, you can add validations
    */
    public function validate($validator_fn)
    {
    $validator_fn($this->validator);
    return $this;
    }

    public function requireReCaptcha($config_fn=null)
    {
    $this->recaptcha = new ReCaptchaValidator();
    $this->recaptcha->enable(true);
    if($config_fn)
    {
    $config_fn($this->recaptcha);
    }
    return $this;
    }
    public function getReCaptcha()
    {
    return $this->recaptcha;
    }

    public function requireCaptcha($enable=true)
    {
    $this->captcha = $enable;
    return $this;
    }

    public function getValidator()
    {
    return $this->validator;
    }

    public function configMailer($mailconfig_fn)
    {
    $mailconfig_fn($this->mailer);
    return $this;
    }

    public function getMailer()
    {
    return $this->mailer;
    }

    public static function create()
    {
    return new FormHandler();
    }

    public function process($post_data)
    {
    if($this->captcha === true)
    {
    $res = $this->validate_captcha($post_data);
    if($res !== true)
    {
    return $res;
    }
    }
    if($this->recaptcha !== null &&
    $this->recaptcha->isEnabled())
    {
    if($this->recaptcha->validate() !== true)
    {
    return json_encode([
    'result'=>'recaptcha_validation_failed',
    'errors'=>['captcha'=>'ReCaptcha Validation Failed.']
    ]);
    }
    }

    $this->validator->test($post_data);

    //if(false == $this->validator->test($post_data))
    if($this->validator->hasErrors())
    {
    return json_encode([
    'result'=>'validation_failed',
    'errors'=>$this->validator->getErrors(/*associative*/ true)
    ]);
    }

    if(!empty($this->emails))
    {
    foreach($this->emails as $email)
    {
    $this->mailer->addAddress($email);
    }
    $this->compose_mail($post_data);

    if(!empty($this->attachments))
    {
    $this->attach_files();
    }

    if(!$this->mailer->send())
    {
    return json_encode([
    'result'=>'error_sending_email',
    'errors'=> ['mail'=> $this->mailer->ErrorInfo]
    ]);
    }
    }

    return json_encode(['result'=>'success']);
    }

    private function validate_captcha($post)
    {
    @session_start();
    if(empty($post['captcha']))
    {
    return json_encode([
    'result'=>'captcha_error',
    'errors'=>['captcha'=>'Captcha code not entered']
    ]);
    }
    else
    {
    $usercaptcha = trim($post['captcha']);

    if($_SESSION['user_phrase'] !== $usercaptcha)
    {
    return json_encode([
    'result'=>'captcha_error',
    'errors'=>['captcha'=>'Captcha code does not match']
    ]);
    }
    }
    return true;
    }


    private function attach_files()
    {

    foreach($this->attachments as $file_field)
    {
    if (!array_key_exists($file_field, $_FILES))
    {
    continue;
    }
    $filename = $_FILES[$file_field]['name'];

    $uploadfile = tempnam(sys_get_temp_dir(), sha1($filename));

    if (!move_uploaded_file($_FILES[$file_field]['tmp_name'],
    $uploadfile))
    {
    continue;
    }

    $this->mailer->addAttachment($uploadfile, $filename);
    }
    }

    private function compose_mail($post)
    {
    $content = "Form submission: \n\n";
    foreach($post as $name=>$value)
    {
    $content .= ucwords($name).":\n";
    $content .= "$value\n\n";
    }
    $this->mailer->Body = $content;
    }
    }



    Alvast bedankt!
    Mvg,
    Els

  2. #2
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    Je code is onleesbaar.
    Zet deze eens tussen php-tags, door op de PHP-knop te drukken tijdens het bewerken?

  3. #3
    Junior Member
    Geregistreerd
    29 maart 2020
    Is deze zo beter leesbaar?
    Alvast bedankt.

    PHP Code:
    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
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    231
    232
    233
    234
    235
    236
    237
    238
    239
    240
    241
    242
    243
    244
    245
    246
    247
    248
    249
    250
    251
    252
    253
    254
    255
    256
    257
    258
    259
    260
    261
    262
    263
    264
    265
    266
    267
    268
    
    <?php
    namespace FormGuide\Handlx;
    use FormGuide\PHPFormValidator\FormValidator;
    use PHPMailer;
    use FormGuide\Handlx\Microtemplate;
    use Gregwar\Captcha\CaptchaBuilder;
     
    /**
    * FormHandler
    * A wrapper class that handles common form handling tasks
    * - handles Form validations using PHPFormValidator class
    * - sends email using PHPMailer
    * - can handle captcha validation
    * - can handle file uploads and attaching the upload to email
    *
    * ==== Sample usage ====
    * $fh = FormHandler::create()->validate(function($validator)
    * {
    * $validator->fields(['name','email'])
    * ->areRequired()->maxLength(50);
    * $validator->field('email')->isEmail();
    *
    * })->useMailTemplate(__DIR__.'/templ/email.php')
    * ->sendEmailTo('you@website.com');
    *
    * $fh->process($_POST);
    */
    class FormHandler
    {
    private $emails;
    public $validator;
    private $mailer;
    private $mail_template;
    private $captcha;
    private $attachments;
    private $recaptcha;
     
    public function __construct()
    {
    $this->emails = array();
    $this->validator = FormValidator::create();
    $this->mailer = new PHPMailer;
    $this->mail_template='';
     
    $this->mailer->Subject = "Contactformulier website De Vierschaar";
     
    $host = isset($_SERVER['SERVER_NAME'])?$_SERVER['SERVER_NAME']:'localhost';
    $from_email ='forms@'.$host;
    $this->mailer->setFrom($from_email,'Contactformulier website',false);
     
    $this->captcha = false;
     
    $this->attachments = [];
     
    $this->recaptcha =null;
     
    }
     
    /**
    * sendEmailTo: add a recipient email address
    * @param string/array $email_s one or more emails. If more than one emails, pass the emails as array
    * @return The form handler object itself so that the methods can be chained
    */
    public function sendEmailTo($email_s)
    {
    if(is_array($email_s))
    {
    $this->emails =array_merge($this->emails, $email_s);
    }
    else
    {
    $this->emails[] = $email_s;
    }
     
    return $this;
    }
     
    public function useMailTemplate($templ_path)
    {
    $this->mail_template = $templ_path;
    return $this;
    }
     
    /**
    * [attachFiles find the file uplods and attach to the email]
    * @param array $fields The array of field names
    */
    public function attachFiles($fields)
    {
    $this->attachments = array_merge($this->attachments, $fields);
    return $this;
    }
     
    public function getRecipients()
    {
    return $this->emails;
    }
     
    /**
    * [validate add Validations. This function takes a call back function which receives the PHPFormValidator object]
    * @param function $validator_fn The funtion gets a validator parameter using which, you can add validations
    */
    public function validate($validator_fn)
    {
    $validator_fn($this->validator);
    return $this;
    }
     
    public function requireReCaptcha($config_fn=null)
    {
    $this->recaptcha = new ReCaptchaValidator();
    $this->recaptcha->enable(true);
    if($config_fn)
    {
    $config_fn($this->recaptcha);
    }
    return $this;
    }
    public function getReCaptcha()
    {
    return $this->recaptcha;
    }
     
    public function requireCaptcha($enable=true)
    {
    $this->captcha = $enable;
    return $this;
    }
     
    public function getValidator()
    {
    return $this->validator;
    }
     
    public function configMailer($mailconfig_fn)
    {
    $mailconfig_fn($this->mailer);
    return $this;
    }
     
    public function getMailer()
    {
    return $this->mailer;
    }
     
    public static function create()
    {
    return new FormHandler();
    }
     
    public function process($post_data)
    {
    if($this->captcha === true)
    {
    $res = $this->validate_captcha($post_data);
    if($res !== true)
    {
    return $res;
    }
    }
    if($this->recaptcha !== null &&
    $this->recaptcha->isEnabled())
    {
    if($this->recaptcha->validate() !== true)
    {
    return json_encode([
    'result'=>'recaptcha_validation_failed',
    'errors'=>['captcha'=>'ReCaptcha Validation Failed.']
    ]);
    }
    }
     
    $this->validator->test($post_data);
     
    //if(false == $this->validator->test($post_data))
    if($this->validator->hasErrors())
    {
    return json_encode([
    'result'=>'validation_failed',
    'errors'=>$this->validator->getErrors(/*associative*/ true)
    ]);
    }
     
    if(!empty($this->emails))
    {
    foreach($this->emails as $email)
    {
    $this->mailer->addAddress($email);
    }
    $this->compose_mail($post_data);
     
    if(!empty($this->attachments))
    {
    $this->attach_files();
    }
     
    if(!$this->mailer->send())
    {
    return json_encode([
    'result'=>'error_sending_email',
    'errors'=> ['mail'=> $this->mailer->ErrorInfo]
    ]);
    }
    }
     
    return json_encode(['result'=>'success']);
    }
     
    private function validate_captcha($post)
    {
    @session_start();
    if(empty($post['captcha']))
    {
    return json_encode([
    'result'=>'captcha_error',
    'errors'=>['captcha'=>'Captcha code not entered']
    ]);
    }
    else
    {
    $usercaptcha = trim($post['captcha']);
     
    if($_SESSION['user_phrase'] !== $usercaptcha)
    {
    return json_encode([
    'result'=>'captcha_error',
    'errors'=>['captcha'=>'Captcha code does not match']
    ]);
    }
    }
    return true;
    }
     
     
    private function attach_files()
    {
     
    foreach($this->attachments as $file_field)
    {
    if (!array_key_exists($file_field, $_FILES))
    {
    continue;
    }
    $filename = $_FILES[$file_field]['name'];
     
    $uploadfile = tempnam(sys_get_temp_dir(), sha1($filename));
     
    if (!move_uploaded_file($_FILES[$file_field]['tmp_name'],
    $uploadfile))
    {
    continue;
    }
     
    $this->mailer->addAttachment($uploadfile, $filename);
    }
    }
     
    private function compose_mail($post)
    {
    $content = "Form submission: \n\n";
    foreach($post as $name=>$value)
    {
    $content .= ucwords($name).":\n";
    $content .= "$value\n\n";
    }
    $this->mailer->Body = $content;
    }
    }

  4. #4
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    Hoe roep je deze class aan?

    Ik zie het al: Ik zal zo even een mooie oplossing bakken
    Laatst aangepast door PHP4U : 29 maart 2020 om 11:44

  5. #5
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    Vervang de compose_mail functie door onderstaande, en het veld wordt eruit gefilterd.

    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    private function compose_mail($post) {
      $ignore_fields = array('G-recaptcha-response','nog_een_veld', 'eventueel_nog_een_veld');
      $content = "Form submission: \n\n";
      foreach($post as $name=>$value) {
         if(!in_array($name,$ignore_fields)) {
            $content .= ucwords($name).":\n";
            $content .= "$value\n\n";
         }
      }
     
      $this->mailer->Body = $content;
    }

    Ook andere velden die je wilt negeren kan je toevoegen aan de array.
    Voor de OO-liefhebbers: Ik had er ook een setting van kunnen maken, maar ik wil nu even geen moeilijke integratie leveren
    Laatst aangepast door PHP4U : 29 maart 2020 om 12:56

  6. #6
    Junior Member
    Geregistreerd
    29 maart 2020
    Bedankt voor uw antwoord.
    Ik heb deze code vervangen en heb het ook eens getest zonder hoofdletter G maar nu wil hij het contactformulier niet verzenden maar hij geeft ook geen syntax errors aan.
    Wat zou ik nog kunnen proberen?
    Alvast bedankt!

    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    private function compose_mail($post) {
      $ignore_fields = array('G-recaptcha-response');
      $content = "Form submission: \n\n";
      foreach($post as $name=>$value) {
         if(!in_array($name,$ignore_fields)) {
            $content .= ucwords($name).":\n";
            $content .= "$value\n\n";
         }
      }
     
      $this->mailer->Body = $content;
    }

  7. #7
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    Wat zegt de error log?

    je moet wel de hoofdletter gebruiken uiteraard.
    Hier zie ik geen syntaxfouten, dus ik denk dat je het verkeerd overgenomen hebt, of wat meer gesloopt hebt dan nodig is?
    Laatst aangepast door PHP4U : 29 maart 2020 om 19:35

  8. #8
    Junior Member
    Geregistreerd
    29 maart 2020
    Ik krijg geen error log, noch de melding wanneer er iets fout is gegaan met het verzenden van het bericht.
    Hij blijft 'hangen' wanneer ik op verzenden druk.

  9. #9
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    Vreemd? En als je terug gaat naar de vorige situatie?

  10. #10
    Junior Member
    Geregistreerd
    29 maart 2020
    Dan verzend hij de email correct maar met de G-recaptch-response code.

    Hierbij de Recaptchavalidator.php:

    PHP Code:
    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
    
    <?php
    namespace FormGuide\Handlx;
     
    class ReCaptchaValidator
    {
        private $enabled;
        private $secret;
        public function __construct()
        {
            $this->enabled=false;
        }
        
        public function isEnabled()
        {
            return $this->enabled;  
        }
     
        public function enable($enable)
        {
            $this->enabled = $enable;
        }
     
        public function initSecretKey($key)
        {
            $this->secret = $key;
        }
     
        public function validate()
        {
            if(empty($_POST['g-recaptcha-response']))
            {
                return false;
            }
     
            $captcha=$_POST['g-recaptcha-response'];
     
            $url = 
            'https://www.google.com/recaptcha/api/siteverify?secret='.$this->secret.'&response='.$captcha.'&remoteip='.$_SERVER['REMOTE_ADDR'];
     
            $resp_raw = file_get_contents($url);
     
            $response=json_decode($resp_raw, true);
     
            if(!empty($response['success']) && $response['success'])
            {
                return true;
            }
            return false;
        }
    }

    En de handler.php:

    PHP Code:
    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
    
    <?php
    ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    /*
    Tested working with PHP5.4 and above (including PHP 7 )
     
     */
    require_once './vendor/autoload.php';
     
    use FormGuide\Handlx\FormHandler;
     
     
    $pp = new FormHandler(); 
     
    $validator = $pp->getValidator();
    $validator->fields(['Name','Email'])->areRequired()->maxLength(50);
    $validator->field('Email')->isEmail();
    $validator->field('Message')->maxLength(6000);
     
     
    $pp->requireReCaptcha();
    $pp->getReCaptcha()->initSecretKey('XXXXXXXXXXXXXXXXXXXXXXXX');
     
     
    $pp->sendEmailTo('info@xxxxxxxxxxx.be'); // ← Your email here
     
    echo $pp->process($_POST);

    Moet ik hieraan misschien ook nog iets aanpassen?
    Alvast bedankt.
    Laatst aangepast door bron : 31 maart 2020 om 17:47

  11. #11
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    Wel raar dat het script met mijn wijziging niks doet?

    Als ik die functie op simpele wijze zo uitvoer, dan filtert hij die reCaptcha-code er gewoon uit?
    Overigens is dit niet om te kopiëren en te plakken. Het demonstreert enkel de werking!
    https://3v4l.org/DPjkN
    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    
    <?php
     
    function compose_mail($post) {
      $ignore_fields = array('G-recaptcha-response');
      $content = "Form submission: \n\n";
      foreach($post as $name=>$value) {
         if(!in_array($name,$ignore_fields)) {
            $content .= ucwords($name).":\n";
            $content .= "$value\n\n";
         }
      }
     
      return $content;
    }
     
    $array = array(
        'lala' => 'tralala',
        'waai' => 'woei',
        'G-recaptcha-response'=> 'nee'
     
    );
    echo compose_mail($array);

    Dus je sloopt naar mijn idee meer dan je moet aanpassen?
    Laatst aangepast door PHP4U : 29 maart 2020 om 21:54

  12. #12
    Junior Member
    Geregistreerd
    29 maart 2020
    Op deze manier is het gelukt!
    Super, heel erg bedankt!

    PHP Code:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    private function compose_mail($post)
        {
            
            
            $ignore_fields = array('g-recaptcha-response');
            
            $content = "Form submission: \n\n";
        foreach($post as $name=>$value) {
         if(!in_array($name,$ignore_fields)) { 
                
                $content .= ucwords($name).":\n";
                $content .= "$value\n\n";
            }
            $this->mailer->Body  = $content;
        }
    }
        }

  13. #13
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    Wat was het probleem nou? Want aan mijn code lag het niet.

  14. #14
    Junior Member
    Geregistreerd
    29 maart 2020
    Hoofdletter G-recaptcha-response verandert naar kleine letter g-recaptcha-response en was op het einde van het script een extra bracket vergeten toe te voegen.
    Nu werkt het perfect, dankuwel voor deze oplossing!

  15. #15
    Giga Senior PHP4U's avatar
    Geregistreerd
    3 augustus 2014
    Die bracket was het dan geweest.

  16. #16
    Moderator bron's avatar
    Geregistreerd
    13 augustus 2013
    Locatie
    Voorburg
    #10 Recaptchavalidator.php

    Regel 30
    $_POST['g-recaptcha-response']
    Het lijkt erop dat het 'g-recaptcha-response' met kleine letters is.

    #10 handler.php

    Regel 23
    Secret key weggehaald, vervangen door X'en
    Bestaande- en nieuwe websites op smartphone, tablet en pc.

Berichtenregels

  • U mag geen nieuwe vragen starten.
  • U mag niet reageren op berichten.
  • U mag geen bijlagen versturen.
  • U mag uw berichten niet bewerken.
  •  
Helpmij.nl
Helpmij.nl

Helpmij.nl

Regels
Help

Helpmij.nl en business

Partners
Sponsoren