@ Sam,
Nee niet echt, het is jusit de bedoeling dat de bot moet denken dat het een verplicht veld is.
Deze verberg je door CSS, zodat een echte gebruiker hem niet kan zien, een bot daarintegen loopt gewoon de code door en denkt dat die veld ook ingevuld moet worden, net als de andere velden :-)
Let wel op: Een captcha is zowiezo velen malen veiliger dan deze methode!
- PHP controle
-
17-02-2010, 11:02 #16
- Berichten
- 751
- Lid sinds
- 15 Jaar
-
17-02-2010, 11:13 #17
- Berichten
- 940
- Lid sinds
- 16 Jaar
Zo ziet de bot dat het een hidden veld is en negeert hij het ook! Daarom moet je het wegmoffelen in een extern CSS file.
@ Ruud, ik zal proberen je reactie te ontcijferen. Volgens mij gaat het wel lukken. Alleen moet wel de huidige structuur van het script aanhouden? Dus dit:
PHP Code:/**
* Validate the message input. Check if its NOT empty.
*
* @param string $name
* @param string $input
* @param string $message
* @return bool
*/
public function isEmpty($note = '[B]HIER[/B]')
{
if(isset($input) && trim($input) != '')
{
return true;
}
else
{
$this -> setErrorMessage($note);
return false;
}
}
Aanvullend bericht:
Hmm dat had ik nog niet gedacht. Ik dacht met deze methode de bezoeker te ontlasten en een goed alternatief te hebben. Ik zal ook dat eens bekijken.Laatst aangepast door Joost Culper : 17-02-2010 om 11:15 Reden: Automatisch samengevoegd.
-
17-02-2010, 11:27 #18
- Berichten
- 751
- Lid sinds
- 15 Jaar
@ Joost,
Het is een manier om je contactformulier extra te beveiligen, maar het word er niet spam-vrij door.
Een bot vult alleen fields in waar die voor geprogrammeerd is.
Wat je wel kan doen is een password field maken met een naam als bijv 313asvsdv ofzo..
Dat vult ie dan bijv. wel weer in..
Dan kan een bot alsnog wel daarlangs komen, als de programmeurs dat ook speciaal instellen voor jouw website, maar de kans dat dat gebeurd is heel klein.
-
17-02-2010, 11:54 #19
- Berichten
- 95
- Lid sinds
- 18 Jaar
Je kunt er ook voor kiezen om een veld een standaard waarde mee te geven, en deze doormiddel van javascript te verwijderen. Dit vereist echter wel dat de gebruiker ook javascript aan heeft staan, en dat is tegenwoordig toch steeds meer het geval (voor Youtube etc.).
-
17-02-2010, 11:58 #20
- Berichten
- 257
- Lid sinds
- 15 Jaar
Hoe dan ook, het trukje zoals ik het beschrijf heeft voor mij op een paar websites behoorlijk geholpen. Het is super gebruiksvriendelijk en werkt altijd. Er is immers geen javascript voor nodig en checken gebeurt server-side.
Neemt niet weg dat ook deze methode omzeild kan worden.
-
17-02-2010, 12:50 #21
- Berichten
- 447
- Lid sinds
- 16 Jaar
Maak gewoon een captcha code..
Stelt niet zoveel voor:
PHP Code:function Code(){
$array = array('a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','1','2','3','4','5','6','7','8','9','0');
$code = '';
for($i = 0; $i < 4; $i++){
$rand = rand(0,35);
$code .= $array[$rand];
}
$_SESSION['code'] = $code;
return $code;
}
PHP Code:if($_POST['code'] != $_SESSION['code']){
echo'Code klopt niet!';
}
else{
echo'Code klopt!';
}
-
17-02-2010, 13:25 #22
- Berichten
- 257
- Lid sinds
- 15 Jaar
Captcha is leuk maar toch ben je en afhankelijk van cookies
en het is niet zo gebruiksvriendelijk.
En hierboven staat nog niet beschreven hoe je de code wil presenteren aan de gebruiker zodat een spambot die niet kan lezen.
Bedenk verder of je site zo interessant is dat spam-bot-admins hierop aanpassingen willen maken...
-
17-02-2010, 13:28 #23
- Berichten
- 447
- Lid sinds
- 16 Jaar
Je presenteerd de code gewoon door code(); aan te roepen.
Mvg,
Lars
-
17-02-2010, 13:43 #24
- Berichten
- 257
- Lid sinds
- 15 Jaar
-
18-02-2010, 12:39 #25
Elephant Media GbR
- Berichten
- 1.253
- Lid sinds
- 18 Jaar
Heb dit scriptje geschreven voor een site waar mee ik bezig ben.
Een paar dingen waarmee je rekening moet houden:
- Indien je geen GDlib hebt, moet je deze downloaden en installeren op je server.
- Maak een map Fonts/ aan, met daar in je fonts. te veranderen ( $font['1'] = "Fonts/arial.ttf"; )
- Destroy de session na het controleren van de code.
Jullie mogen zelf weten hoe jullie dit gaan checken. xD , als je niet weet hoe dat moet ga dan maar een boek lezen ( php voor dummies ofzo )..
img.php
PHP Code:<?php
session_start();
unset($_SESSION['captcha']);
header("Content-type: image/png");
$i = 0;
$num = '';
while ($i <= 4) {
$i++;
$Random = rand(0,34);
$array = array('1','2','3','4','5','6','7','8','9','0','a','b','c','d','e','f','g','h','j','i','k','l','m','n','o','p','q','r','s','t','v','w','x','y','z');
$num .= $array[$Random];
}
$xRand = rand(15,35);
$yRand = rand(30,40);
$xRandSh = $xRand-2;
$yRandSh = $yRand-2;
$rRandBg = rand(66,200);
$gRandBg = rand(66,200);
$bRandBg = rand(66,200);
$rRand = $rRandBg/2;
$gRand = $gRandBg/2;
$bRand = $bRandBg/2;
$size = rand(18,24);
$font['1'] = "Fonts/arial.ttf";
$font['2'] = "Fonts/rock.ttf";
$font['3'] = "Fonts/bedizen.ttf";
$font['4'] = "Fonts/arialbd.ttf";
$fRand = rand(1,3);
$angle = rand(0,6);
$im = imagecreate(150, 50);
$background_color = imagecolorallocate($im, $rRandBg, $gRandBg, $bRandBg);
$text_color = imagecolorallocate($im, $rRand, $gRand, $bRand);
$white = imagecolorallocate($im, 255, 255, 255);
$black = imagecolorallocate($im, 0, 0, 0);
$i = 0;
while ($i <= 3) {
$rand['1'] = rand(66,250);
$rand['2'] = rand(66,250);
$rand['3'] = rand(66,250);
$xAs[$i] = rand(20,35);
$yAs[$i] = rand(20,35);
$zAs[$i] = rand(20,35);
$color[$i] = imagecolorallocate($im, $rand['1'], $rand['2'], $rand['3']);
$i++;
}
imagefilledellipse($im, 29, $zAs['0'], $xAs['0'], $zAs['0'], $color['0']);
imagefilledellipse($im, 59, $zAs['1'], $xAs['1'], $zAs['1'], $color['1']);
imagefilledellipse($im, 89, $zAs['2'], $xAs['2'], $zAs['2'], $color['2']);
imagefilledellipse($im, 119, $zAs['3'], $xAs['3'], $zAs['3'], $color['3']);
// 4px Border Lines
imageline($im, 0, 0, 0, 50, $black);
imageline($im, 1, 0, 1, 50, $black);
imageline($im, 2, 0, 2, 50, $black);
imageline($im, 3, 0, 3, 50, $black);
imageline($im, 149, 0, 149, 50, $black);
imageline($im, 148, 0, 148, 50, $black);
imageline($im, 147, 0, 147, 50, $black);
imageline($im, 146, 0, 146, 50, $black);
imageline($im, 0, 0, 150, 0, $black);
imageline($im, 0, 1, 150, 1, $black);
imageline($im, 0, 2, 150, 2, $black);
imageline($im, 0, 3, 150, 3, $black);
imageline($im, 0, 46, 150, 46, $black);
imageline($im, 0, 47, 150, 47, $black);
imageline($im, 0, 48, 150, 48, $black);
imageline($im, 0, 49, 150, 49, $black);
// Add the text
//imagettftext($im, 5, 0, 10, 20, $black, $font, $text);
imagettftext($im, 7, 0, 100, 44, $black, $font[4], "-St-");
imagettftext($im, 7, 0, 101, 45, $white, $font[4], "-St-");
imagettftext($im, $size, $angle, $xRandSh, $yRandSh, $black, $font[$fRand], $num);
imagettftext($im, $size, $angle, $xRand, $yRand, $white, $font[$fRand], $num);
$_SESSION['captcha'] = $num;
imagepng($im);
imagedestroy($im);
?>
-
18-02-2010, 12:49 #26
- Berichten
- 2.392
- Lid sinds
- 17 Jaar
$array = array_merge(range('a', 'z'), range(0, 9));
-
18-02-2010, 12:55 #27
Elephant Media GbR
- Berichten
- 1.253
- Lid sinds
- 18 Jaar
Thanks! die kende ik nog niet =D
Plaats een
- + Advertentie
- + Onderwerp
Marktplaats
Webmasterforum
- Websites algemeen
- Sitechecks
- Marketing
- Domeinen algemeen
- Waardebepaling
- CMS
- Wordpress
- Joomla
- Magento
- Google algemeen
- SEO
- Analytics
- Adsense
- Adwords
- HTML / XHTML
- CSS
- Programmeren
- PHP
- Javascript
- JQuery
- MySQL
- Ondernemen algemeen
- Belastingen
- Juridisch
- Grafisch ontwerp
- Hosting Algemeen
- Hardware Info
- Offtopic