Captcha script - Functioneert niet naar behoren!

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Mark van den Brink

Mark van den Brink

31/12/2012 07:54:54
Quote Anchor link
Beste mede-phpfanaten,

Ik had een vraag over mijn script. Ik ben al even bezig om mijn
formulier spam vrij te houden door middel van een captcha nu werkt de captcha alleen de afhandeling niet van het verzenden kan iemand mij helpen?

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

$maand
= array(1 => "Januari", "Februari", "Maart",
               "April", "Mei", "Juni",
               "Juli", "Augustus", "September",
               "Oktober", "November", "December");
      

require 'includes/mail.php';
              
$userErrors = Array();

function
checkmail($email)
{

    $email_host = explode("@", $email);
    $email_host = $email_host['1'];
    $email_resolved = gethostbyname($email_host);
    if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email))
       $valid = 1;
    return $valid;
}


if(isset($_POST['Verzenden'])){
    
$naam = htmlentities($_POST['naam']);
$adres = htmlentities($_POST['adres']);
$postcode = htmlentities($_POST['postcode']);
$plaats = htmlentities($_POST['plaats']);
$telefoon = htmlentities($_POST['telefoon']);
$email = htmlentities($_POST['email']);
$norobot = $_POST['norobot'];


    if( !isset($naam) || $naam == '' )
    {

        
        $userErrors[] = 'U heeft geen naam ingevuld';
    }

    
    if( $_POST['gd'] == '' || $_POST['gm'] == '' || $_POST['gj'] == '' )
    {

        $userErrors[] = 'U heeft uw geboortedatum niet juist ingevult';
    }

    
    if( !isset($adres) || $adres == '' )
    {

        
        $userErrors[] = 'U heeft geen adres ingevuld';
    }

    
    if( !isset($postcode) || $postcode == '' )
    {

        
        $userErrors[] = 'U heeft geen postcode ingevuld';
    }

    if( !isset($plaats) || $plaats == '' )
    {

        
        $userErrors[] = 'U heeft geen plaats ingevuld';
    }

    
    if( !isset($telefoon) || $telefoon == '' )
    {

        
        $userErrors[] = 'U heeft geen telefoonnummer ingevuld';
    }

    
    if( !isset($email) || $email == '' )
    {

        
        $userErrors[] = 'U heeft geen e-mailadres ingevuld';
    }

    elseif(checkmail($email) == 0)
        {

            $userErrors[] = 'Vul een correct e-mailadres in';
            unset($email);
        }

    
        if( !isset($_POST['opleidingen']) || $_POST['opleidingen'] == '' )
    {

        
        $userErrors[] = 'U heeft geen opleiding ingevuld';
    }

    
    if (md5($norobot) != $_SESSION['randomnr2']) {
            $userErrors[] = 'Beveiligingscode verkeerd ingevoerd';
        }
    
    

    if( count($userErrors) == 0 )
    {

            $msg = "Beste Chris,<br><br>";
            $msg .= "".$naam." zou graag ".$_POST['radio']." voor: ".$_POST['opleidingen']."<br><br>";
            $msg .= "De volgende gegevens waren achter gelaten op de website:<br><br>";
            $msg .= "<b>Naam: </b>".$naam."<br>";
            $msg .= "<b>Geboortedatum: </b>".$_POST['gd']."-".$_POST['gm']."-".$_POST['gj']."<br>";
            $msg .= "<b>Adres: </b>".$adres."<br>";
            $msg .= "<b>Postcode: </b>".$postcode."<br>";
            $msg .= "<b>Woonplaats: </b>".$plaats."<br>";
            $msg .= "<b>Telefoon: </b>".$telefoon."<br>";
            $msg .= "<b>E-mailadres: </b>".$email."<br><br>";
            $msg .= "Direct reageren klik hier om hem te mailen: <b><a href=mailto:".$email.">".$email."</a></b><br><br><br>";
            
            $msg .= "<b><u>Overige gegevens:</u></b><br>";
            $msg .= "Datum: " . date("d.m.Y") . "<br>";
            $msg .= "Tijd: " . date("H:i") . "<br>";
            $msg .= "Ip addr: " . $_SERVER['REMOTE_ADDR'] . "<br><br>";
            
            $msg .= "Met vriendelijke groeten,<br><br>Webmaster ---";

            if(mail($to, $subject, $msg, $headers)) {
            $resultMessage = 'Uw bericht is succesvol verstuurd! U hoort zo snel mogelijk van ons!';    
            }

            else
            {
                $userError[] = 'Uw bericht kon niet verstuurd worden, probeer het later nog eens.';
            }
    }
}

?>


<style type="text/css">
.verplicht {
    color: #F00;
}
</style>


              
<table width="580" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td> <h2>Vul hieronder uw gegevens in en wij nemen zo snel mogelijk contact met u op.</h2>
    
    
    <?php
    if( count($errors) > 0 ) :
          // Er zijn errors gevonden ?>

        <div class="error">
            <ul>
            <?php foreach( $errors as $err ) : ?>
                <li><?php echo $err; ?></li>
            <?php endforeach; ?>
            </ul>
        </div>
    <?php endif; ?>
    <?php if( count($userErrors) > 0 ) :
          // Er zijn errors gevonden ?>

        <div class="error">
            <ul>
            <?php foreach( $userErrors as $err ) : ?>
                <li><?php echo $err; ?></li>
            <?php endforeach; ?>
            </ul>
        </div>
    <?php endif; ?>
    <?php if( isset($resultMessage) ) echo $resultMessage; ?>
    <form name="Inschrijven" method="POST" action="<? $_SERVER['PHP_SELF']; ?>">
    <p><br />
      Volledige naam <span class="verplicht">*</span><br />
    <input name="naam" type="text" id="naam" size="30" /></p>
    <p>Geboortedatum <span class="verplicht">*</span><br />
    <select id="gd" name="gd" size="1">
<option value="">(Dag)</option>
<?php
for ($dag = 1; $dag <= 31; $dag++) {
    echo "<option>" . $dag . "</option>\n";
}

?>

</select>

<select name="gm" size="1">
<option value="">(Maand)</option>
<?php
foreach ($maand as $maandnummer => $maandnaam) {
    echo "<option value=\"" . $maandnummer . "\">" . $maandnaam . "</option>\n";
}

?>

</select>

<select name="gj" size="1">
<option value="">(Jaar)</option>
<?php
for ($jaar = (int) date("Y"); $jaar >= 1900; $jaar--) {
    echo "<option>" . $jaar . "</option>\n";
}

?>

</select></p>
    <p>Adres + Huisnummer <span class="verplicht">*</span><br />
    <input name="adres" type="text" id="textfield" size="30" /></p>
    <p>Postcode <span class="verplicht">*</span><br />
    <input name="postcode" type="text" id="textfield" size="30" /></p>
    <p>Woonplaats <span class="verplicht">*</span><br />
    <input name="plaats" type="text" id="textfield" size="30" /></p>
    <p>Telefoonnummer <span class="verplicht">*</span><br />
    <input name="telefoon" type="text" id="textfield" size="30" /></p>
    <p>E-mailadres <span class="verplicht">*</span><br />
    <input name="email" type="text" id="textfield" size="30" /></p>
    <p>
      <input type="radio" name="radio" id="radio2" value="informatie willen hebben" />
      Informatie |
      <input name="radio" type="radio" id="radio" value="willen inschrijven" checked="checked" />
Inschrijven voor <span class="verplicht">*</span><br />
    <select name="opleidingen" id="select2">
      <option value="" selected="selected">Selecteer Opleiding</option>
      <optgroup label="Snorkelen">
      <option value="Snorkel Training">Snorkel Training</option>
      </optgroup>
</select></p>
    <p>Beveiligingscode <span class="verplicht">*</span><br />
    <img src="includes/captcha.php"><br /><input name="norobot" type="text" class="input" size="30" placeholder="Voer bovengenoemde code in!"></p>
<br /><input name="Verzenden" type="submit" value="Verzenden"> <input name="Reset" type="reset" value="Opnieuw" />
    </form>
    
    </td>
  </tr>
</table>


Heb even wat weggehaald bij opleidingen anders zijn jullie nog wel even aan het lezen..

mijn captcha bestand is:

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
<?php
// het random nr. aanmaken en gecodeerd opslaan in php sessie

session_start();

$randomnr = rand(1000, 9999);
$_SESSION['randomnr2'] = md5($randomnr);

// captcha plaatje met nummer maken - afmetingen kun je aanpassen gebruikte font

$im = imagecreatetruecolor(100, 38);

// Kleurenbepaling

$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);

// zwarte rechthoek tekenen - afmetingen kun je aanpassen aan verschillende fonts

imagefilledrectangle($im, 0, 0, 200, 35, $black);

// hier - font.ttf' vervangen met de locatie van je eigen font bestand
$font = 'verdana.ttf';

// schaduw toevoegen

imagettftext($im, 35, 0, 22, 24, $grey, $font, $randomnr);

// randomnr. toevoegen

imagettftext($im, 35, 0, 15, 26, $white, $font, $randomnr);

// voorkomen dat afbeelding ge-cached wordt

header("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

// plaatje verzenden naar browser

header ("Content-type: image/gif");
imagegif($im);
imagedestroy($im);
?>


Wat is nu het probleem het maakt niet uit of ik de code nou wel of niet goed invul hij blijft weergeven "Beveiligingscode verkeerd ingevoerd"

kan iemand uit mijn script halen wat ik verkeerd doe?

Alvast bedankt!

En voor iedereen een fijne jaarwisseling en een gelukkig 2013 toegewenst!
 
PHP hulp

PHP hulp

27/04/2024 22:11:50
 
Obelix Idefix

Obelix Idefix

31/12/2012 08:46:09
Quote Anchor link
Controleer eens of $_SESSION['randomnr2'] wel bestaat, nadat het formulier verzonden is.
Ik verwacht het niet, omdat je geen session_start bovenaan de pagina hebt staan; een sessie bestaat dan niet.

t.a.v. je code:

Controleren of een formulier verzonden is doe je met
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php if($_SERVER['REQUEST_METHOD'] == "POST")  ?>


Regel 25 t/m 31 is (zinloos) kopiëren van variabelen; je hebt de $_POST-waarden immers al.
Je gaat daarnaast eerst kopiëren en pas _daarna_ controleren of ze wel bestaan. Lijkt me sowieso de verkeerde volgorde.

Waarom inconsequent scripten? $userErrors[] gebruik je ' en bij $msg gebruik je " Op regel 175 breekt het gebruik van " voor PHP je op --> je moet escapen. Gebruik daarom in PHP ' en in HTML "

Op regel 93 is "" niet zo zinvol; je doet er niets.

eregi (in je functie) is verouderd/vervallen.

Om een formulier op te nemen in een table is niet van deze tijd. Als je dan toch een tabel gebruikt, zet dan in ieder geval niet alles in 1 td.
 
Mark van den Brink

Mark van den Brink

31/12/2012 09:04:06
Quote Anchor link
Bedankt voor je andwoord,

In mijn captcha staat session_start en als ik deze ook aan mij formulier toevoeg krijg ik de foutmelding dat headers already sent.

Regel 25 t/m 31 had ik gedaan voor de htmlentities dit is mij ooi geleerd vanwege veiligheid want ik had het eerst op deze manier allemaal:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
if( !isset($_POST['opleidingen']) || $_POST['opleidingen'] == '' )
    {
        
        $userErrors[] = 'U heeft geen opleiding ingevuld';
    }
Toen kreeg ik te horen dat ik html entities moest gebruiken dus had ik dat gedaan ik geloof alles ben maar een hobbyist haha.

$msg is voor mijn e-mail die verzonden word jij bedoelt zeker $resultMessage
die heb ik later toegevoegd want als ik $userErrors[] die gebruikte op hetzelfde punt gaf hij niet die reactie en nu wel.. Graag hoor ik van je hoe ik dat anders aan kan pakken.

regel 93 heb ik veranderd.

hoe zou ik eregi of mijn e-mail op een andere manier kunnen controleren?

En inderdaad tabel is verouderd daarom is mijn layout ook gemaakt met div's ik gebruik alleen enkel die tabel zodat degene die hem gaat gebruiken straks niet buiten zijn kaders kan typen en metteen ziet hoe het eruit komt te zien. dus eigenlijk nutteloos maar puur voor hem als gebruiksgemak...

Graag hoor ik van je hoe ik die andere dingen kan aanpakken en natuurlijk hoe ik mijn captcha probleem kan oplossen?
 
Obelix Idefix

Obelix Idefix

31/12/2012 09:32:11
Quote Anchor link
Sonic GFX op 31/12/2012 09:04:06:
En inderdaad tabel is verouderd daarom is mijn layout ook gemaakt met div's
..... dus eigenlijk nutteloos.

Doe het dan niet. Je maakt het voor iemand anders begrijp ik. Doe het dan goed en niet 2x half.

Al eens geprobeerd om de session_start uit je captcha-bestand te gooien en (alleen) op te nemen in je 1e script? ;-)

De controle die je eerst had was goed. Het advies om htmlentities te gebruiken is ook goed, maar dan op een andere manier/plek.
Begin met de goede volgorde te hanteren; eerst controleren of de variabele bestaat, dan pas bewerken. verigens kun je ook prima in je mail werken met htmlentities; je hoeft er geen nieuwe variabele(n) voor aan te maken.

Sonic GFX op 31/12/2012 09:04:06:
want als ik $userErrors[] die gebruikte op hetzelfde punt

Begrijp niet wat daar staat.
$userErrors[] is een array en bevat foutmeldingen.
Ik bedoel $msg (regel (92 t/m 107). Daar gebruik je "
Waar komt op regel 136 $errors vandaan? Je stopt alle foutmeldingen namelijk in $userErrors[].

Zet error-reporting eens aan.

eregi is vervangen door preg_match.

Open en sluit je echt zo vaak php?
Op regel 145/146 is het in ieder geval niet nodig.
Daarnaast kun je in php prima werken met echo.

Op regel 157 gebruik je overigens een short-tag.

$_SERVER['PHP_SELF']; wordt als onveilig gezien; het zou mensen in de gelegenheid stellen om je formulier te misbruiken. Laat dan liever leeg (of gebruik ook daar htmlentities).
 
Mark van den Brink

Mark van den Brink

31/12/2012 09:52:53
Quote Anchor link
Even een afstreep lijstje:
Tabel => in Div gedaan

Session_start => veranderd krijg ik alleen nog dezelfde fout:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /Atlantic/home.php:82) in /Atlantic/pagina/Inschrijven.php on line 2

Htmlentities => Aangepast op de oude manier die ik eerst hanteerde en dan aangepast in de mail.

$msg => Snap ik nog niet echt wat daar fout aan is..

Regel 136 => Verwijderd is inderdaad een script die er niet hoort.

eregi => veranderd

Regel 157 => Veranderd

$_Server => ook veranderd

Dat is al een aardig lijstje afgewerkt zo zit alleen nogsteeds met mijn session_start fout.

Obelix in ieder geval alvast bedankt voor de huidige aanpassingen om mijn script beter te maken.
 
Obelix Idefix

Obelix Idefix

31/12/2012 09:58:45
Quote Anchor link
Sonic GFX op 31/12/2012 09:52:53:
Session_start => veranderd krijg ik alleen nog dezelfde fout:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /Atlantic/home.php:82) in /Atlantic/pagina/Inschrijven.php on line 2


Waar plaats je de session_start()? Dit doe je het beste direct na
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
< ? php (zonder spaties)
boven aan de pagina.
Wordt deze pagina opgeroepen in een andere pagina?
Als je het helemaal bovenaan plaatst en het niet wordt opgeroepen in een ander bestand, dan heb je mogelijk te maken met BOM (http://en.wikipedia.org/wiki/Byte_order_mark).
Gewijzigd op 31/12/2012 09:59:47 door Obelix Idefix
 
Mark van den Brink

Mark van den Brink

31/12/2012 14:17:23
Quote Anchor link
Ik heb nu de session_start op de allereerste pagina gezet dus waar ik mijn layout script heb daar word namelijk Inschrijven in opgeroepen nu krijg ik geen session start fout meer maar...
wel nogsteeds beveiligingscode onjuist...

Toevoeging op 31/12/2012 14:40:21:

Ik heb hier en daar wat lopen proberen heb nu alleen een nieuw probleem eerst de scripts:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if (md5($norobot) != $_SESSION['randomnr2']) {
            $userErrors[] = 'Beveiligingscode verkeerd ingevoerd';
        }    


nu is het:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
if ($_POST['norobot'] == $_SESSION['randomnr2']) {
            $userErrors[] = 'Beveiligingscode verkeerd ingevoerd';
        }    


En dit werkt als ze niks invullen doet hij het goed maar als je iets willekeurigs invult klopt hij ook?
Dus dat is me nieuwe probleem..
 
Obelix Idefix

Obelix Idefix

31/12/2012 16:02:22
Quote Anchor link
Je zult moeten vergelijken of de ingevoerde waarde overeenkomt met hetgeen in de sessie staat.
De nieuwe code kan/mag dan nooit werken, omdat je nog met md5 aan de gang moet.

Wordt het debuggen:
Controleer de waarde in de sessie door deze te echo-en naar het scherm.
Controleer wat er zit in $_POST['norobot'].
Wat komt er uit md5($_POST['norobot'])?
 
Mark van den Brink

Mark van den Brink

31/12/2012 16:14:52
Quote Anchor link
oke ik heb het volgende gedaan:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo $_SESSION['randomnr2']; ?>

Geen response

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo md5($_POST['norobot']); ?>

En daar kreeg ik een hele lange md5 code bijv: d41d8cd98f00b204e9800998ecf8427e

nu alleen het geen wat ik vreemd vind is dat hij dat direct al geeft en niet nadat ik pas wat in met norobot input heb gezet...
 
Obelix Idefix

Obelix Idefix

31/12/2012 16:34:27
Quote Anchor link
Als die sessie niets laat zien, zul je dus (uiteraard) geen resultaat vinden.

Waar heb je die twee regels neergezet in je code?
Wat zit er in $_POST['norobot']?

Gebruik van short-tag kan problemen geven, gebruik daarom < ? php (zonder de spaties).
 
Mark van den Brink

Mark van den Brink

31/12/2012 17:42:56
Quote Anchor link
Ik heb hem gewoon in me script gezet hier:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<div style="width:580">            
<h2>Vul hieronder uw gegevens in en wij nemen zo snel mogelijk contact met u op.</h2>
    
     <?php echo $_POST['norobot']; ?>



Dit geeft als resultaat hetgene wat ik ook heb ingevoerd.

Zal even de hele code weer posten:


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

$maand
= array(1 => "Januari", "Februari", "Maart",
               "April", "Mei", "Juni",
               "Juli", "Augustus", "September",
               "Oktober", "November", "December");
      

require 'includes/mail.php';
              
$userErrors = Array();

function
checkmail($email)
{

    $email_host = explode("@", $email);
    $email_host = $email_host['1'];
    $email_resolved = gethostbyname($email_host);
    if ($email_resolved != $email_host && preg_match("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$email))
       $valid = 1;
    return $valid;
}


if(isset($_POST['Verzenden'])){
    $email = $_POST['email'];

    if( !isset($_POST['naam']) || $_POST['naam'] == '' )
    {

        
        $userErrors[] = 'U heeft geen naam ingevuld';
    }

    
    if( $_POST['gd'] == '' || $_POST['gm'] == '' || $_POST['gj'] == '' )
    {

        $userErrors[] = 'U heeft uw geboortedatum niet juist ingevult';
    }

    
    if( !isset($_POST['adres']) || $_POST['adres'] == '' )
    {

        
        $userErrors[] = 'U heeft geen adres ingevuld';
    }

    
    if( !isset($_POST['postcode']) || $_POST['postcode'] == '' )
    {

        
        $userErrors[] = 'U heeft geen postcode ingevuld';
    }

    if( !isset($_POST['plaats']) || $_POST['plaats'] == '' )
    {

        
        $userErrors[] = 'U heeft geen plaats ingevuld';
    }

    
    if( !isset($_POST['telefoon']) || $_POST['telefoon'] == '' )
    {

        
        $userErrors[] = 'U heeft geen telefoonnummer ingevuld';
    }

    
    if( !isset($email) || $email == '' )
    {

        
        $userErrors[] = 'U heeft geen e-mailadres ingevuld';
    }

    elseif(checkmail($email) == 0)
        {

            $userErrors[] = 'Vul een correct e-mailadres in';
            unset($email);
        }

    
        if( !isset($_POST['opleidingen']) || $_POST['opleidingen'] == '' )
    {

        
        $userErrors[] = 'U heeft geen opleiding ingevuld';
    }

    
    if (md5($_POST['norobot']) != $_SESSION['randomnr2']) {
            $userErrors[] = 'Beveiligingscode verkeerd ingevoerd';
        }
    
    

    if( count($userErrors) == 0 )
    {

            $msg = "Beste Chris,<br><br>";
            $msg .= htmlentities($_POST['naam'])." zou graag ".$_POST['radio']." voor: ".$_POST['opleidingen']."<br><br>";
            $msg .= "De volgende gegevens waren achter gelaten op de website:<br><br>";
            $msg .= "<b>Naam: </b>".htmlentities($_POST['naam'])."<br>";
            $msg .= "<b>Geboortedatum: </b>".$_POST['gd']."-".$_POST['gm']."-".$_POST['gj']."<br>";
            $msg .= "<b>Adres: </b>".htmlentities($_POST['adres'])."<br>";
            $msg .= "<b>Postcode: </b>".htmlentities($_POST['postcode'])."<br>";
            $msg .= "<b>Woonplaats: </b>".htmlentities($_POST['plaats'])."<br>";
            $msg .= "<b>Telefoon: </b>".htmlentities($_POST['telefoon'])."<br>";
            $msg .= "<b>E-mailadres: </b>".htmlentities($email)."<br><br>";
            $msg .= "Direct reageren klik hier om hem te mailen: <b><a href=mailto:".htmlentities($email).">".htmlentities($email)."</a></b><br><br><br>";
            
            $msg .= "<b><u>Overige gegevens:</u></b><br>";
            $msg .= "Datum: " . date("d.m.Y") . "<br>";
            $msg .= "Tijd: " . date("H:i") . "<br>";
            $msg .= "Ip addr: " . $_SERVER['REMOTE_ADDR'] . "<br><br>";
            
            $msg .= "Met vriendelijke groeten,<br><br>Webmaster Atlantic Duikcentrum";

            if(mail($to, $subject, $msg, $headers)) {
            $resultMessage = 'Uw bericht is succesvol verstuurd! U hoort zo snel mogelijk van ons!';    
            }

            else
            {
                $userError[] = 'Uw bericht kon niet verstuurd worden, probeer het later nog eens.';
            }
    }
}

?>


<style type="text/css">
.verplicht {
    color: #F00;
}
</style>


   <div style="width:580">            
<h2>Vul hieronder uw gegevens in en wij nemen zo snel mogelijk contact met u op.</h2>
    
     <?php echo $_POST['norobot']; ?>

    <?php if( count($userErrors) > 0 ) :
          // Er zijn errors gevonden ?>

        <div class="error">
            <ul>
            <?php foreach( $userErrors as $err ) : ?>
                <li><?php echo $err; ?></li>
            <?php endforeach; ?>
            </ul>
        </div>
    <?php endif; ?>
    <?php if( isset($resultMessage) ) echo $resultMessage; ?>
    <form name="Inschrijven" method="POST" action="<? htmlentities($_SERVER['PHP_SELF']); ?>">
    <p><br />
      Volledige naam <span class="verplicht">*</span><br />
    <input name="naam" type="text" id="naam" size="30" /></p>
    <p>Geboortedatum <span class="verplicht">*</span><br />
    <select id="gd" name="gd" size="1">
<option value="">(Dag)</option>
<?php
for ($dag = 1; $dag <= 31; $dag++) {
    echo "<option>" . $dag . "</option>";
}

?>

</select>

<select name="gm" size="1">
<option value="">(Maand)</option>
<?php
foreach ($maand as $maandnummer => $maandnaam) {
    echo "<option value=\"" . $maandnummer . "\">" . $maandnaam . "</option>";
}

?>

</select>

<select name="gj" size="1">
<option value="">(Jaar)</option>
<?php
for ($jaar = (int) date("Y"); $jaar >= 1900; $jaar--) {
    echo "<option>" . $jaar . "</option>";
}

?>

</select></p>
    <p>Adres + Huisnummer <span class="verplicht">*</span><br />
    <input name="adres" type="text" id="textfield" size="30" /></p>
    <p>Postcode <span class="verplicht">*</span><br />
    <input name="postcode" type="text" id="textfield" size="30" /></p>
    <p>Woonplaats <span class="verplicht">*</span><br />
    <input name="plaats" type="text" id="textfield" size="30" /></p>
    <p>Telefoonnummer <span class="verplicht">*</span><br />
    <input name="telefoon" type="text" id="textfield" size="30" /></p>
    <p>E-mailadres <span class="verplicht">*</span><br />
    <input name="email" type="text" id="textfield" size="30" /></p>
    <p>
      <input type="radio" name="radio" id="radio2" value="informatie willen hebben" />
      Informatie |
      <input name="radio" type="radio" id="radio" value="willen inschrijven" checked="checked" />
Inschrijven voor <span class="verplicht">*</span><br />
    <select name="opleidingen" id="select2">
      <option value="" selected="selected">Selecteer Opleiding</option>
      <optgroup label="Snorkelen">
      <option value="Snorkel Training">Snorkel Training</option>
      </optgroup>
      <optgroup label="Duiken voor kinderen">
      <option value="Kinderen Introductie Duik">Introductie Duik</option>
      <option value="Bubble Maker">Bubble Maker</option>
      <option value="Sealteam">Sealteam</option>
      <option value="Master Sealteam">Master Sealteam</option>
      <option value="Junior Open Water Diver">Junior Open Water Diver</option></optgroup>
</select></p>
    <p>Beveiligingscode <span class="verplicht">*</span><br />
    <img src="includes/captcha.php"><br /><input name="norobot" type="text" class="input" size="30" placeholder="Voer bovengenoemde code in!"></p>
<br /><input name="Verzenden" type="submit" value="Verzenden"> <input name="Reset" type="reset" value="Opnieuw" />
    </form>
</div>


captcha.php

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
<?php
// het random nr. aanmaken en gecodeerd opslaan in php sessie

session_start();

$randomnr = rand(1000, 9999);
$_SESSION['randomnr2'] = md5($randomnr);

// captcha plaatje met nummer maken - afmetingen kun je aanpassen gebruikte font

$im = imagecreatetruecolor(100, 38);

// Kleurenbepaling

$white = imagecolorallocate($im, 255, 255, 255);
$grey = imagecolorallocate($im, 128, 128, 128);
$black = imagecolorallocate($im, 0, 0, 0);

// zwarte rechthoek tekenen - afmetingen kun je aanpassen aan verschillende fonts

imagefilledrectangle($im, 0, 0, 200, 35, $black);

// hier - font.ttf' vervangen met de locatie van je eigen font bestand
$font = 'verdana.ttf';

// schaduw toevoegen

imagettftext($im, 35, 0, 22, 24, $grey, $font, $randomnr);

// randomnr. toevoegen

imagettftext($im, 35, 0, 15, 26, $white, $font, $randomnr);

// voorkomen dat afbeelding ge-cached wordt

header("Expires: Wed, 1 Jan 1997 00:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");

// plaatje verzenden naar browser

header ("Content-type: image/gif");
imagegif($im);
imagedestroy($im);
?>


en ik heb ook een session_start in de hoofdpagina

Heb jij anders evt. een ander script of idee hoe ik hem kan beveiligen tegen spam?
Gewijzigd op 31/12/2012 18:13:57 door Mark van den Brink
 



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.