Nog een Captcha

Door Pieter van Linschoten, 21 jaar geleden, 3.330x bekeken

Naar aanleiding van alle CAPTCHA* ophef heb ik ook maar eens een script geschreven.

* http://www.phphulp.nl/php/scripts/8/929/
http://www.phphulp.nl/php/scripts/1/926/

Maar als het bovenste voorbeeld gevorderd is, wat is dit dan? :p

Genoeg uitgelegd!

Schematische werking:
1. Er wordt een randomstring gegenereerd van een aantal tekens naar keuze ($iDigits). Tegelijkertijd kent hij aan 4 variabelen het aantal cijfers, letters, de desbetreffende cijfers en de desbetreffende letters toe.

2. d.m.v. rand() wordt een vraagstelling gekozen, die betrekking heeft op de string.

3. De waarde van het antwoord dat bij de vraag wordt word d.m.v. een sessie opgeslagen.

4. Waarde wordt verstuurd en gecontroleerd.

Ik hoop het bruikbaar materiaal is. :)

Voorbeeld: http://www.lapidi.nl/captcha.php

Gesponsorde koppelingen

PHP script bestanden

  1. nog-een-captcha

 

Er zijn 17 reacties op 'Nog een captcha'

PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Rolf Flikker op
Rolf Flikker op
21 jaar geleden
 
0 +1 -0 -1
Tamelijk makkelijk te breken, ik geef persoonlijk de voorkeur aan plaatjes.

Je manier was programmeren vind ik wel mooi :); goed ingesprongen en type-aanduidingen (of hoe dat dan ook heet) voor de namen van je variabelen.

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
<?php
$digits
= array();
        $digits[0] = 'A';    $digits[1] = 'B';    $digits[2] = 'C';
        $digits[3] = 'D';    $digits[4] = 'E';    $digits[5] = 'F';
        $digits[6] = 'G';    $digits[7] = 'H';    $digits[8] = 'I';
        $digits[9] = 'J';    $digits[10] = 'K';    $digits[11] = 'L';
        $digits[12] = 'M';    $digits[13] = 'N';    
        $digits[14] = 'P';    $digits[15] = 'Q';    $digits[16] = 'R';
        $digits[17] = 'S';    $digits[18] = 'T';    $digits[19] = 'U';
        $digits[20] = 'V';    $digits[21] = 'W';    $digits[22] = 'X';
        $digits[23] = 'Y';    $digits[24] = 'Z';    $digits[25] = '1';
        $digits[26] = '2';    $digits[27] = '3';    $digits[28] = '4';
        $digits[29] = '5';    $digits[30] = '6';    $digits[31] = '7';
        $digits[32] = '8';    $digits[33] = '9';

/* Kan ook korter: */

$digits = array('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', /* ... */ '9');
?>
Willem-Aart
Willem-Aart
21 jaar geleden
 
0 +1 -0 -1
Kan nog korter zelfs;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$digits
= array_merge(range("A","Z"),range(1,9));
$digits[14] = null;
print_r($digits);
?>
Simon Blok
Simon Blok
21 jaar geleden
 
0 +1 -0 -1
Veel te moeilijk voor gebruikers!!
Wessel Johnson
Wessel Johnson
21 jaar geleden
 
0 +1 -0 -1
Mooi ingesprongen, maar een lastige test voor gebruikers
- SanThe -
- SanThe -
21 jaar geleden
 
0 +1 -0 -1
Goed! Je bent een mens of een HELE slimme bot!

Mijn vrienden zeggen dat ik heel bot kan zijn. Is dat menselijk? ;-))
- wes  -
- wes -
21 jaar geleden
 
0 +1 -0 -1
ik zal daar geen antwoord op geven santhe :)
Scrptr
Scrptr
21 jaar geleden
 
0 +1 -0 -1
Véél te moeilijk voor gebruik, eerst typte ik het letterlijk over. Toen bleek er gevraagt te zijn welke letters er stonden. Dat deed ik dus bij de volgende bleek dat de vraag was dat ik de letters moest tellen :l
- wes  -
- wes -
21 jaar geleden
 
0 +1 -0 -1
Geen toegang voor BOTS en Analfabeten!
Hipska BE
Hipska BE
21 jaar geleden
 
0 +1 -0 -1
er zijn maar 4 combinaties die makkelijk te achterhalen zijn

aantal letters
aantal cijfers
welke letters
welke cijfers

ik maak zo een botje die het juiste antwoord kan maken.
count, is_numeric
count, !is_numeric
is_numeric
!is_numeric
en nog paar simpele loopjes en if's
Cake Masher
Cake Masher
21 jaar geleden
 
0 +1 -0 -1
keek ff naar je voorbeeld..

Hoeveel cijfers, geen 1 te bekennen..
daarna moest ik weer terug omdat ik niets had ingevult :'|
Niek s
niek s
21 jaar geleden
 
0 +1 -0 -1
dan vul je tog 0 in?
GaMer B
GaMer B
21 jaar geleden
 
0 +1 -0 -1
Dan ben ik zwaar analfabeet, want soms dan heb je 7 letters en dan typ je 7 in en dan is het niet goed =/
Robert Deiman
Robert Deiman
21 jaar geleden
 
0 +1 -0 -1
Beter is in dit geval om het te mixen en dan bijvoorbeeld te vragen hoevaak een bepaald teken voorkomt. (ik noem maar wat)
Gooi een aantal tekens random in je captcha. Random daar een teken uit wat geteld moet worden en stel die vraag. Een mens kan dat gemakkelijk doen, voor een bot die eerst de captcha moet ontcijferen, (dus de tekens eruit halen) dan de vraag begrijpen en het antwoord bepalen, is dat erg lastig. Ook voor schrijvers is dit moeilijk te programmeren.
Zeker als je er ook nog een sommetje van maakt: aantal x m + aantal x n (bijvoorbeeld) Ik denk dat er (nu nog) geen bot is die dat kraakt.
Marvin S
Marvin S
21 jaar geleden
 
0 +1 -0 -1
ik vind het erg leuk om te zien hoeveel mensen geintresseerd zijn in de captcha scripts.. er is ook zoveel mogelijk
Lissy Pixel
Lissy Pixel
21 jaar geleden
 
0 +1 -0 -1
@ SanThe: dan ben je vast een menselijke bot of een bot met menselijke trekjes in iedergeval een echt knuffelbeertje :)
Scrptr
Scrptr
21 jaar geleden
 
0 +1 -0 -1
Ja precies, iedereen is nog opzoek naar "het" script wat niet te botten valt. Misschien moeten we een keer ergens anders gaan zoeken dan captcha.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Pieter van Linschoten
Pieter van Linschoten
21 jaar geleden
 
0 +1 -0 -1
Ik ben al bezig om het met flash te doen. 't probleem is alleen, Je moet het er eerst instoppen. Maar ik zal jullie laten weten wanneer ik weer een mijlpaal berijkt heb.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

Inhoudsopgave

  1. nog-een-captcha

Labels

  • Geen tags toegevoegd.

Navigatie

 
 

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.