checkbox in contactformulier

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Frederic D

Frederic D

14/05/2018 16:50:26
Quote Anchor link
Ik probeer een pagina GDPR proof te maken met een check box naar de privacy policy te plaatsen in het contactformulier.
De uitkomst moet zijn: indien men het vinkje "privacy policy" aanvinkt (verplicht veld), wordt er in de verzonden email aangeduid dat men dit heeft gedaan (bevestiging). Ik vind de juiste code niet voor in de php file rond lijn 34: $checkbox = ... Ik vermoed toch dat de rest ok is. Wat zou ik hier moeten toevoegen om dit correct op te nemen? Alvast bedankt voor de hulp.

Contactform:
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
<form class="nobottommargin" id="template-contactform" name="template-contactform" action="include/sendemail-gastenboek.php" method="post">

                            <div class="form-process"></div>

                            <div class="col_one_fourth">
                                <label for="template-contactform-name">Naam - Name <small>*</small></label>
                                <input type="text" id="template-contactform-name" name="template-contactform-name" value="" class="sm-form-control required" placeholder="Uw naam - Your name" />
                            </div>

                            <div class="col_one_fourth">
                                <label for="template-contactform-email">Email <small>*</small></label>
                                <input type="email" id="template-contactform-email" name="template-contactform-email" value="" class="required email sm-form-control" placeholder="Uw email - Your email" />
                            </div>
                            
                            <div class="col_one_fourth">
                                <label for="template-contactform-website">Website</label>
                                <input type="text" id="template-contactform-website" name="template-contactform-website" value="" class="sm-form-control" placeholder="Website URL" />
                            </div>
                            
                            <div class="col_one_fourth col_last">
                                <label for="template-contactform-blog">Blog</label>
                                <input type="text" id="template-contactform-blog" name="template-contactform-blog" value="" class="sm-form-control" placeholder="Blog URL" />
                            </div>

                            <div class="col_full">
                                <label for="template-contactform-message">Bericht - Message <small>*</small></label>
                                <textarea class="required sm-form-control" id="template-contactform-message" name="template-contactform-message" rows="4" cols="30" placeholder="Uw bericht - Your message"></textarea>
                            </div>

                            <div class="col_full hidden">
                                <input type="text" id="template-contactform-botcheck" name="template-contactform-botcheck" value="" class="sm-form-control" />
                            </div>
                            
                            <div>
                                <input id="checkbox-privacypolicy" class="required checkbox-style" name="checkbox-1" type="checkbox">
                                <label for="checkbox-privacypolicy" class="checkbox-style-3-label">Ik heb de <a href="privacy-policy.html" title="privacy policy">Privacy policy</a> gelezen en goedgekeurd.<small>*</small> / I have read and accepted the <a href="privacy-policy.html" title="privacy policy">Privacy policy</a> <small>*</small></label>
                            </div>

                            <div class="col_full">
                                <button class="button button-3d nomargin" type="submit" id="template-contactform-submit" name="template-contactform-submit" value="submit">Verstuur naar ons gastenboek - Send to our guestbook</button>
                            </div>

                        </form>


Php sendemail:

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

require_once('phpmailer/class.phpmailer.php');

$mail = new PHPMailer();

if( isset( $_POST['template-contactform-submit'] ) AND $_POST['template-contactform-submit'] == 'submit' ) {
    if( $_POST['template-contactform-name'] != '' AND $_POST['template-contactform-email'] != '' AND $_POST['template-contactform-message'] != '' AND $_POST['checkbox-privacypolicy'] != '' ) {

        $name = $_POST['template-contactform-name'];
        $email = $_POST['template-contactform-email'];
        $website = $_POST['template-contactform-website'];
        $blog = $_POST['template-contactform-blog'];
        $message = $_POST['template-contactform-message'];
        $checkbox = $_POST['checkbox-privacypolicy'];

        $subject = isset($subject) ? $subject : 'Gastenboek bericht van ....be';

        $botcheck = $_POST['template-contactform-botcheck'];

        $toemail = '[email protected]';
        $toname = 'Frederic D.';

        if( $botcheck == '' ) {

            $mail->SetFrom( $email , $name );
            $mail->AddReplyTo( $email , $name );
            $mail->AddAddress( $toemail , $toname );

            $name = isset($name) ? "Name: $name<br><br>" : '';
            $email = isset($email) ? "Email: $email<br><br>" : '';
            $website = isset($website) ? "Website: $website<br><br>" : '';
            $blog = isset($blog) ? "Blog: $blog<br><br>" : '';
            $checkbox =

            $referrer = $_SERVER['HTTP_REFERER'] ? '<br><br><br>Dit gastenboek bericht is verstuurd van: ' . $_SERVER['HTTP_REFERER'] : '';

            $body = "$name $email $website $blog $message $checkbox $referrer";

            $mail->MsgHTML( $body );
            $sendEmail = $mail->Send();

            if( $sendEmail == true ):
                echo 'We hebben uw verzoek <strong>goed ontvangen</strong>. We zullen dit de komende uren/dagen bekijken.';
            else:
                echo 'Email <strong>could not</strong> be sent due to some Unexpected Error. Please Try Again later.<br /><br /><strong>Reason:</strong><br />' . $mail->ErrorInfo . '';
            endif;
        }
else {
            echo 'Bot <strong>Detected</strong>.! Clean yourself Botster.!';
        }
    }
else {
        echo 'Vul <strong>alle velden</strong> opnieuw in en probeer opnieuw.';
    }
}
else {
    echo 'Er doet zich <strong>een probleem</strong> voor. Probeer later opnieuw.';
}


?>
 
PHP hulp

PHP hulp

12/12/2024 16:12:12
 
- Ariën  -
Beheerder

- Ariën -

14/05/2018 17:04:55
Quote Anchor link
<input id="checkbox-privacypolicy" class="required checkbox-style" name="checkbox-1" type="checkbox">

v.s.

$_POST['checkbox-privacypolicy']

Dat is een groot verschil ;-)
 
Frederic D

Frederic D

14/05/2018 17:13:56
Quote Anchor link
De name moet idd nog aangepast worden naar 'checkbox-privacypolicy'.
Maar wat dien ik te plaatsen op lijn 34 van de php file? Of is het complexer dan dit?
 
- Ariën  -
Beheerder

- Ariën -

14/05/2018 17:32:59
Quote Anchor link
$checkbox = isset($checkbox) ? "Status: Akkoord!<br><br>" : 'Status: Niet akkoord!<br><br>';
 
Jan te Pas

Jan te Pas

14/05/2018 17:54:14
Quote Anchor link
En je zou, om het nog mooier te maken, de submittoets deactiveren, en als de leveringsvoorwaarden akkoord zijn dan activeren. Hier een 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
<script type="text/javascript">

var checkobj
function agreesubmit(el){
checkobj=el
if (document.all||document.getElementById){
for (i=0;i<checkobj.form.length;i++){  
var tempobj=checkobj.form.elements
if(tempobj.type.toLowerCase()=="submit")
tempobj.disabled=!checkobj.checked
}
}
}
function defaultagree(el){
if (!document.all&&!document.getElementById){
if (window.checkobj&&checkobj.checked)
return true
else{
alert("Lees eerst de voorwaarden en ga ermee akkoord!")
return false
}
}
}
</SCRIPT>

<table align=center>
 <tr>
  <td>
<form ACTION="http://www.leejoo.nl" target="_new" name="agreeform" onSubmit="return defaultagree(this)">
<!-- verander hierboven de url en target waarnaar doorgeklikt kan worden -->
<textarea rows="10" name="S1" cols="32" wrap="virtual">
Voorwaarden :
Bij deze ga ik akkoord met de voorwaarden die gelden ..... bla bla bla
bla
bla
vink de optie akkoord aan....</textarea><br>
<input name="agreecheck" TYPE="checkbox" onClick="agreesubmit(this)"> Ik ga
akkoord met de voorwaarden
<br><br>
<input type="Submit" value="Verder" disabled>
</form>

<script type="text/javascript">
document.forms.agreeform.agreecheck.checked=false
</script>

  </td>
 </tr>
</table>


Dit zet je tussen <body> en </body>

Uiteraard kun je ook een deel gebruiken. Let even op de id van de Submit.
Gewijzigd op 14/05/2018 17:59:37 door Jan te Pas
 
Frank Nietbelangrijk

Frank Nietbelangrijk

14/05/2018 18:52:02
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$checkbox
= $_POST['checkbox-privacypolicy'];
?>


Dit geeft foutmeldingen. Het 'checkbox-privacypolicy' element zal alleen bestaan in de $_POST array wanneer de gebruiker de checkbox heeft aangevinkt. Indien de checkbox niet aangevinkt is zul je hierop een foutmelding krijgen.

De juiste manier is dus om te controleren of het 'checkbox-privacypolicy' bestaat met isset. (en ariën zag dit ook even over het hoofd)

Dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
$checked
= false;

if(isset($_POST['checkbox-privacypolicy'])) {
    $checked = true; // checkbox aangevinkt
}

// doe iets met $checked
?>


Toevoeging op 14/05/2018 18:55:28:

Dit zou je ook kunnen zien als je gewoon de hele $_POST array op het scherm plempt:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo '<pre>' . print_r($_POST, true) . '</pre>';
?>
 
Rob Doemaarwat

Rob Doemaarwat

14/05/2018 20:36:28
Quote Anchor link
Ik weet niet of de Privacy Policy op gelijke lijn staat met de Algemene Voorwaarden, maar dan zou je dat hele vinkje ook gewoon weg kunnen laten: https://blog.iusmentis.com/2013/09/12/is-een-aanvinkvakje-voor-algemene-voorwaarden-verplicht/ (maar het kan ook geen kwaad).
 
Frederic D

Frederic D

14/05/2018 21:27:05
Quote Anchor link
Bedankt voor de info!
 
Ben van Velzen

Ben van Velzen

14/05/2018 22:42:45
Quote Anchor link
Leuke cargo culting zo'n checkbox, maar feitelijk niet nodig. Het volstaat om de voorwaarden (rechtstreeks) aan te rijken, en de mogelijkheid te geven deze op te slaan. Als je dit tweede deel niet doet heb je onder de oude wetgeving ook al een probleem.
 



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.