Ga naar inhoud

captcha zonder cookie?


Aanbevolen berichten

Waarom zou je überhaupt een cookie gebruiken? Om de oplossing in op te slaan ofzo? Dan is het heel eenvoudig te kraken. Als ik jou was zou ik in de sessie een identifier zetten voor de betreffende CAPTCHA en die in de database matchen met de oplossing. Meer heb je niet nodig. Terzijde: hou er rekening mee dat veel CAPTCHA's tegenwoordig gemakkelijker op te lossen zijn door spambots dan door mensen. Verwacht er dus niet teveel van; zodra je site bekend wordt en spambots krijgen interesse in je, dan zal de CAPTCHA niet veel meer tegenhouden.
Link naar reactie
Sorry voor de late reactie.. Mijn PHP kennis is te weinig om je oplosing te gebruiken. Sterker nog ik weet niet eens wat een identifier is :o Ik gebruik een bestaand contact script wat ik een beetje heb aangepast, alles werkt perfect maar ik kwam via een validatie site er achter dat het cookies gebruikt.. Ik vroeg me meer af of er een bepaalde "code" is die een cookie maakt, ik zie in het script niks wat het zou kunnen veroorzaken. Of is een session een cookie? :oops:
Link naar reactie
Dit is het script: [code:1:f811dd2ab3]<?php session_start(); ini_set( 'display_errors', true ); error_reporting( E_ALL | E_STRICT ); function checkmail($email) { if (preg_match("/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$/i", $email)) { list($userName, $mailDomain) = split("@", $email); if (checkdnsrr($mailDomain, "MX")) { return TRUE; } } return FALSE; } $formulier = TRUE; if(isset($_POST['verzenden']) && ($_SERVER['REQUEST_METHOD'] == "POST")) { $aFout = array(); $voornaam = trim($_POST['voornaam']); $achternaam = trim($_POST['achternaam']); $email = trim($_POST['email']); $onderwerp = trim($_POST['onderwerp']); $bericht = trim($_POST['bericht']); if(TRUE) { $code = $_POST['code']; } (||=of)(&&=AND). if(empty($voornaam) || (strlen($voornaam) < 2) || preg_match("[<>]", $voornaam) ) { $aFout[] = "Er is geen voornaam ingevuld."; unset($voornaam); $fout['text']['voornaam'] = TRUE; $fout['input']['voornaam'] = TRUE; } if(empty($achternaam) || (strlen($achternaam) < 2) || preg_match("[<>]", $achternaam) ) { $aFout[] = "Er is geen achternaam ingevuld."; unset($achternaam); $fout['text']['achternaam'] = TRUE; $fout['input']['achternaam'] = TRUE; } if(empty($email)) { $aFout[] = "Er is geen e-mail adres ingevuld."; unset($email); $fout['text']['email'] = TRUE; $fout['input']['email'] = TRUE; } elseif(!filter_var($email, FILTER_VALIDATE_EMAIL)) { $aFout[] = "Er is geen correct e-mail adres ingevuld."; unset($email); $fout['text']['email'] = TRUE; $fout['input']['email'] = TRUE; } if(empty($onderwerp)) { $aFout[] = "Er is geen onderwerp ingevuld."; unset($onderwerp); $fout['text']['onderwerp'] = TRUE; $fout['input']['onderwerp'] = TRUE; } if(empty($bericht)) { $aFout[] = "Er is geen bericht ingevuld."; unset($bericht); $fout['text']['bericht'] = TRUE; $fout['input']['bericht'] = TRUE; } if(TRUE) { if(strtoupper($code) != $_SESSION['captcha_code']) { $aFout[] = "Er is geen correcte code ingevuld."; $fout['text']['code'] = TRUE; $fout['input']['code'] = TRUE; } } if(!empty( $aFout )) { $errors = ' <div id="errors"> <ul>'; foreach($aFout as $sFout) { $errors .= " <li>".$sFout."</li>\n"; } $errors .= "</ul> </div>"; } else { $formulier = FALSE; if(TRUE) {[/code:1:f811dd2ab3] Hierna komen de formuliertjes voor de email en de invul velden. En als laatste de captcha deze code zal ik ook toevoegen: [code:1:f811dd2ab3]<?php session_start(); if (phpversion () < "5"){ // define PHP5 functions if server uses PHP4 function str_split($text, $split = 1) { if (!is_string($text)) return false; if (!is_numeric($split) && $split < 1) return false; $len = strlen($text); $array = array(); $s = 0; $e=$split; while ($s <$len) { $e=($e <$len)?$e:$len; $array[] = substr($text, $s,$e); $s = $s+$e; } return $array; } } // Captcha keygenerator function keygen($aantal) { $tekens = array_merge(range('A', 'F'), array('H', 'J', 'K', 'M', 'N'), range('P', 'Z')); $randomstring = ""; for($i=1; $i <= $aantal; $i++) { shuffle($tekens); $randomstring .= $tekens[0]; } return $randomstring; } $random_code = keygen(4); $_SESSION['captcha_code'] = $random_code; $breedte = 90; $hoogte = 30; header("content-type: image/png"); $afbeelding = imagecreate($breedte, $hoogte); $achtergrond = imagecolorallocate($afbeelding, 255, 255, 255); $font = "fonts/arial.ttf"; $kleur = imagecolorallocate($afbeelding, 186, 197, 214); imagerectangle($afbeelding, 0, 0, $breedte-1, $hoogte-1, $kleur); $aantal_punten = rand(250, 500); for ($i = 0; $i < $aantal_punten; $i++) { imagesetpixel($afbeelding, rand(1, $breedte-1), rand(1, $hoogte-1), $kleur); } $aantal_lijnen = rand(5, 8); $aantal_cirkels = rand(5, 8); $aantal_lijnen2 = rand(2, 6); $spread = 100; for($i = 0; $i < $aantal_lijnen; $i++) { $y_begin = rand(-$spread, $hoogte + $spread); $y_eind = rand(-$spread, $hoogte + $spread); $kleur = imagecolorallocate($afbeelding, rand(170, 255), rand(170, 255), rand(170, 255)); imageline($afbeelding, 0, $y_begin, $breedte, $y_eind, $kleur); } for($i = 0; $i < $aantal_cirkels; $i++) { $y_center = rand(1, $breedte-1); $x_center = rand(1, $hoogte-1); $kleur = imagecolorallocate($afbeelding, rand(170, 255), rand(170, 255), rand(170, 255)); imageellipse($afbeelding, $y_center, $y_center, rand(50, 100), rand(50, 100), $kleur); } $tekst = str_split($random_code); for ($i = 0; $i < count($tekst); $i++) { $xas = rand(5, 15); $yas = rand(18, 25); $graden = rand(-25, 25); $grootte = rand(12,14); $kleur = imagecolorallocate($afbeelding, rand(0, 100), rand(0, 100), rand(0, 100)); imagettftext($afbeelding, $grootte, $graden, $i * 20 + $xas, $yas, $kleur, $font, $tekst[$i]); } for($i = 0; $i < $aantal_lijnen2; $i++) { $y_begin = rand(-$spread, $hoogte + $spread); $y_eind = rand(-$spread, $hoogte + $spread); $kleur = imagecolorallocate($afbeelding, rand(170, 255), rand(170, 255), rand(170, 255)); imageline($afbeelding, 0, $y_begin, $breedte, $y_eind, $kleur); } imagepng($afbeelding); imagedestroy($afbeelding); ?>[/code:1:f811dd2ab3]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...