anoniem Geplaatst: 5 januari 2013 Delen Geplaatst: 5 januari 2013 Hallo allemaal, Ik zou graag mijn site zonder cookies willen. Maar nu gebruik ik een captcha bij het contact formulier is een cookie dan echt nodig? Groeten, Erwin Quote Link naar reactie
anoniem Geplaatst: 6 januari 2013 Auteur Delen Geplaatst: 6 januari 2013 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. Quote Link naar reactie
anoniem Geplaatst: 7 januari 2013 Auteur Delen Geplaatst: 7 januari 2013 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: Quote Link naar reactie
anoniem Geplaatst: 7 januari 2013 Auteur Delen Geplaatst: 7 januari 2013 Laat die identifier maar even zitten dan. :) Een sessie en een cookie zijn twee verschillende dingen. Kun je misschien eens wat laten zien van het script dat je gebruikt? Dan kunnen we het eens goed bekijken en je beter advies geven. Quote Link naar reactie
anoniem Geplaatst: 8 januari 2013 Auteur Delen Geplaatst: 8 januari 2013 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] Quote Link naar reactie
anoniem Geplaatst: 9 januari 2013 Auteur Delen Geplaatst: 9 januari 2013 Ik heb het niet helemaal uitgespit, maar ik zie daar nergens de functie setcookie() aangeroepen worden. Het enige wat je validator misschien zal zien is de cookie [i:554aa917bd]PHPSESSID[/i:554aa917bd], maar dat is iets wat bijhoudt welke sessie dat je hebt. Niet om je zorgen om te maken dus. :) Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen