Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

PHP script: Univerzální captcha

elixido
verified
rating uzivatele
(30 hodnocení)
3. 1. 2010 13:25:14
Dám to sem jen tak, třeba se to hodí někomu, kdo si to neumí napsat sám :)
Udělal jsem si takový jednoduchý script - captcha..
Použití je naprosto primitivní !
Do formuláře, který chcete chránit, JEN přidáte obrázek a políčko pro zadání kódu, asi takto:
A do scriptu, který Vám zpracovává formulář jen vložíte kód
include ("./elixido_captcha.php");
A to je vše, ochrana je funkční.
Pokud si chcete definovat vlastní stránku, která se zobrazí při špatně zadaném kontrolním kódu, uděláte to takto:
$captcha_error_url = "http://vasbeb.cz/stranka-s-chybovou-hlaskou.html";
include ("./elixido_captcha.php");
Můžete použít jakýkoliv vlastní font (TTF) i obrázek na pozadí (i velký, script si vystřihuje pokaždé jinou část..)
Spravne zneni kodu se zasifruje (Triple DES) a ulozi do cookies. Proto je nutne zmenit "$sifrovaci_klic".
Takze zdrojak elixido_captcha.php
// šifrovací klíč ZMĚŇTE na libovolný náhodný text !
$siforvaci_klic = "iasEdFfjq5wierhAsndG";
// cesta k fontu
$fontfile = "./font2.ttf";
// Obrázek, ze kterého se bude dělat pozadí
$obrazek_pozadi = "./captcha_pozadi.jpg";
if (eregi("getimg", $_SERVER)) {
$captcha = imagecreatetruecolor (250, 80);
$pozadi = imagecreatefromjpeg ($obrazek_pozadi);
$size = getimagesize ($obrazek_pozadi);
$src_x = mt_rand(0,($size - 250));
$src_y = mt_rand(0,($size - 80));
imagecopy ($captcha, $pozadi, 0, 0, $src_x, $src_y, 250, 80);
$captcha_text = "";
// délka textu bude od 3 do 5 znaků
for ($char_pos=0; $char_pos < mt_rand(3, 5); $char_pos++) {
$velikost = mt_rand (15,40); if (!isset($velikost_minule)) $velikost_minule = $velikost;
$rotace = mt_rand (-50, 50);
$barva = imagecolorallocate ($captcha, mt_rand(0, 150), mt_rand(50, 200), mt_rand(0,50));
$char = chr(mt_rand (65, 90));
imagettftext ($captcha, $velikost, $rotace, ($char_pos * 40) + $velikost_minule, 50, $barva, $fontfile, $char);
$velikost_minule = $velikost;
$captcha_text .= $char;
}
setcookie("captcha_code", encrypt($captcha_text), time()+3600);
header ("Content-type: image/gif");
header("Cache-Control: no-cache");
header('Expires: ' . gmdate('D, d M Y H:i:s', time()) . ' GMT');
imagegif ($captcha);
die ();
}
if (isset($_POST) && strtoupper($_POST) != decrypt($_COOKIE)) {
if (isset($captcha_error_url)) header ("Location: $captcha_error_url");
die ("Spatne prepsany kontrolni kod !");
}
function encrypt($string) {
global $siforvaci_klic;
$enc=mcrypt_cbc (MCRYPT_TripleDES, $siforvaci_klic, $string, MCRYPT_ENCRYPT, base64_decode ("0CzLlkPl9Ko="));
return base64_encode($enc);
}
function decrypt($string) {
global $siforvaci_klic;
$string = trim(base64_decode($string));
$dec = mcrypt_cbc (MCRYPT_TripleDES, $siforvaci_klic, $string, MCRYPT_DECRYPT, base64_decode ("0CzLlkPl9Ko="));
return trim($dec);
}
?>
---------- Doplňující příspěvek odeslán v 13:30 ----------
live ukazka: http://elixido.cz/captcha/
3. 1. 2010 13:25:14
https://webtrh.cz/diskuse/php-script-univerzalni-captcha/#reply431162
Jeste jsem zapomel:
Ve stejnem adresari musi byt nejaky obrazek na pozadi a font.
Obrazek: http://elixido.cz/captcha/captcha_pozadi.jpg
Font: http://elixido.cz/captcha/font2.ttf
Cely balicek i s ukazkovym formularem:
http://elixido.cz/captcha/elixido_captcha.zip
3. 1. 2010 17:25:52
https://webtrh.cz/diskuse/php-script-univerzalni-captcha/#reply431161
petrx
verified
rating uzivatele
(8 hodnocení)
11. 1. 2010 12:40:07
Docela by mě zajímalo, jaký font zvolit, aby text přečetli lidé a nikoli OCR
Další fintou by bylo generování náhodného řetězce z trigramů nebo aspoˇm z bigramů, aby se lépe psal
A náhodná volba pozadí... Třeba náhodně generovaný šum
11. 1. 2010 12:40:07
https://webtrh.cz/diskuse/php-script-univerzalni-captcha/#reply431160
super, funguje spolehlivě... a bez dlouhého ladění ;-)
20. 1. 2010 22:10:36
https://webtrh.cz/diskuse/php-script-univerzalni-captcha/#reply431159
elixido
verified
rating uzivatele
(30 hodnocení)
31. 1. 2010 21:48:22
Napsal petrx;432509
Docela by mě zajímalo, jaký font zvolit, aby text přečetli lidé a nikoli OCR
Další fintou by bylo generování náhodného řetězce z trigramů nebo aspoˇm z bigramů, aby se lépe psal
A náhodná volba pozadí... Třeba náhodně generovaný šum
Hlavne me vzdycky fascinuje, jak lidi davaji silene klikyhaky a sum do pozadi a pritom pouzijou obycejny font a vsechny pismena stejne barvy.. To je pak prace na par vterin to zlomit. (znam barvu pisma, takze staci projet pixel za pixelem a ostatni barvy dat do bile.. Pak je z toho za vterinu obrazek, ktery precte kazda podprumerna ocr ctecka)
Ja si myslim, ze to co jsem tady dal pro bezny web staci. Ma to cik-cak ruznobarevny font s nahodnym pozadim, takze pohoda.. Jeste uvazuju, ze dodelam nahodne stridani fontu, to je asi tak vse, co bych jeste zmenil..
31. 1. 2010 21:48:22
https://webtrh.cz/diskuse/php-script-univerzalni-captcha/#reply431158
Napsal elixido;447876
Ja si myslim, ze to co jsem tady dal pro bezny web staci.
Pro bezny web staci napojeni na nektery z free systemu a neobjevovat znovu kolo...
1. 2. 2010 01:40:43
https://webtrh.cz/diskuse/php-script-univerzalni-captcha/#reply431157
elixido
verified
rating uzivatele
(30 hodnocení)
1. 2. 2010 09:17:13
Napsal syntaxsugar;448027
Pro bezny web staci napojeni na nektery z free systemu a neobjevovat znovu kolo...
co myslis free systemem?
Hlavne nerikej recaptcha.. to bych na web nikomu nedal ani za trest
1. 2. 2010 09:17:13
https://webtrh.cz/diskuse/php-script-univerzalni-captcha/#reply431156
http://woork.blogspot.com/2009/02/10-free-captcha-scripts-and-services.html
1. 2. 2010 09:32:24
https://webtrh.cz/diskuse/php-script-univerzalni-captcha/#reply431155
hm
verified
rating uzivatele
(20 hodnocení)
1. 2. 2010 18:59:42
me by hlavne zajimalo proc pouzit tu tvou captchu kdyz je prakticky uplne stejne dobre prolomitelna jako byhc v malovani napsal text a ulozil ho do obrazku... chtelo yb to asi neco sofistikovanejsiho, opisovai textu z obrazku uz spolehlive neni a na odfiltrovani jendoduchych spameru staci sckrytym javascriptem vkladat textove pole do html... takze bud neoc skutecne sofistikovaneho nebo nic... ale tohle? k nicemu, jen to obtezuje uzivatele
---------- Doplňující příspěvek odeslán v 19:05 ----------
mimochdoem kdyz uz captcha s opisovanim textu tak bych urcite radeji zvolil toto http://doublethink.cleverweb.cz/22-textova-3d-captcha barevny pismenka na sumovem pozadi opravdu icemu nepomuzou
1. 2. 2010 18:59:42
https://webtrh.cz/diskuse/php-script-univerzalni-captcha/#reply431154
Tak tak, nehlede na to, ze takovy "kus kodu" je pro realne veci nepouzitelny. Zadne testy, zadna dokumentace, zadna podpora, promenne v cestine?!? WTF?! Co ty komentare?
Co budes delat, kdyz na cilovem systemu nebudou zadne fonty? nebo treba jen cyrilice? ;] Co s uzivateli s vypnutymi obrazky? Co s hendikepovanymi? Nejaka pristupnost? Jak narocne budou ty random a hashovaci funkce?
Kdyz uz chces mermomoci neco programovat, tak zacni vylepsovat nektery z OSS (viz. ten link vyse) a neplytvej svym casem...
1. 2. 2010 19:13:24
https://webtrh.cz/diskuse/php-script-univerzalni-captcha/#reply431153
petrx
verified
rating uzivatele
(8 hodnocení)
1. 2. 2010 19:23:55
Napsal elixido;448084
Hlavne nerikej recaptcha.. to bych na web nikomu nedal ani za trest
Proč?
Na Facebooku docela funguje
1. 2. 2010 19:23:55
https://webtrh.cz/diskuse/php-script-univerzalni-captcha/#reply431152
elixido
verified
rating uzivatele
(30 hodnocení)
1. 2. 2010 19:36:44
Napsal petrx;448583
Proč?
Na Facebooku docela funguje
Vim, ono do "dobre funguje" na spouste webu, asi mam proti tomu jen nejakou osobni averzi :) Proste se mi to spatne cte, spatne prepisuje.. Nekdy si musim i 5x kliknout na novy obrazek, abych aspon trosku videl, co je tam napsane..
Jinak tenhle kousek kodu jsem tady dal jen tak.. Bylo to hlavne kvuli te jednoduchosti, proto jsem si to napsal. Staci do formulare vlozit obrazek, do dalsiho scriptu jeden radek kodu a je hotovo.
syntaxsugar: Samozrejme mas pravdu, kdyby to bylo neco, co bych chtel oficialne prezentovat jako svuj produkt urceny pro cely svet, asi by to bylo napsane lip s komentarema v phpdoc... tohle je proste jen kousek jednoducheho kodu, ktery pouzivam prave kvuli jednoduchosti pouziti na svych webech.
A jsem zasadne proti tomu, aby byla kazda pitomina obalena v class...
1. 2. 2010 19:36:44
https://webtrh.cz/diskuse/php-script-univerzalni-captcha/#reply431151
petrx
verified
rating uzivatele
(8 hodnocení)
3. 2. 2010 08:44:19
Napsal elixido;448600
Vim, ono do "dobre funguje" na spouste webu, asi mam proti tomu jen nejakou osobni averzi :) Proste se mi to spatne cte, spatne prepisuje.. Nekdy si musim i 5x kliknout na novy obrazek, abych aspon trosku videl, co je tam napsane..
Není to třeba tak, že s recaptcha mohou mít problém lidé, kteří neumí dobře anglicky?
(Nechci se do nikoho navážet, sám s recaptcha problémy nemám a snažím se rpostě zjistit, kde je zakopán pes)
3. 2. 2010 08:44:19
https://webtrh.cz/diskuse/php-script-univerzalni-captcha/#reply431150
elixido
verified
rating uzivatele
(30 hodnocení)
3. 2. 2010 12:19:56
Napsal petrx;449748
Není to třeba tak, že s recaptcha mohou mít problém lidé, kteří neumí dobře anglicky?
(Nechci se do nikoho navážet, sám s recaptcha problémy nemám a snažím se rpostě zjistit, kde je zakopán pes)
Anglictina mi jde docela dobre (teda aspon co se tyce cteni..), takze tady problem opravdu nebude..
3. 2. 2010 12:19:56
https://webtrh.cz/diskuse/php-script-univerzalni-captcha/#reply431149
Hlavní problém "ReCaptchy" je podle mě v tom, že to na návštěvníky působí amatérsky. Používá to už spousta webů a když to pak člověk vidí 10x na 10 různých webech, tak je mu jasný, že si tady někdo nechtěl dát práci s tím napsat vlastní kousek kódu.
Kdyby se tam dal nějakým způsobem změnit vzhled, nebo počeštit, bylo by to OK, ale dávat to takhle na českej web je podle mě hřích. Ne že by s tím měl někdo problémy, ale prostě to působí hůř než když je tam "vlastní" ověření.
3. 2. 2010 17:19:52
https://webtrh.cz/diskuse/php-script-univerzalni-captcha/#reply431148
Pro odpověď se přihlašte.
Přihlásit