PHP script: Univerzální captcha
elixido
3. 1. 2010 13:25:14
3. 1. 2010 13:25:14
Webtrh obecný účet
3. 1. 2010 17:25:52
3. 1. 2010 17:25:52
petrx
11. 1. 2010 12:40:07
11. 1. 2010 12:40:07
Webtrh obecný účet
20. 1. 2010 22:10:36
20. 1. 2010 22:10:36
elixido
31. 1. 2010 21:48:22
31. 1. 2010 21:48:22
Jaromir Fojtu
1. 2. 2010 01:40:43
1. 2. 2010 01:40:43
elixido
1. 2. 2010 09:17:13
1. 2. 2010 09:17:13
Jaromir Fojtu
1. 2. 2010 09:32:24
1. 2. 2010 09:32:24
hm
1. 2. 2010 18:59:42
1. 2. 2010 18:59:42
Jaromir Fojtu
1. 2. 2010 19:13:24
1. 2. 2010 19:13:24
petrx
1. 2. 2010 19:23:55
1. 2. 2010 19:23:55
elixido
1. 2. 2010 19:36:44
1. 2. 2010 19:36:44
petrx
3. 2. 2010 08:44:19
3. 2. 2010 08:44:19
elixido
3. 2. 2010 12:19:56
3. 2. 2010 12:19:56
Webtrh obecný účet
3. 2. 2010 17:19:52
3. 2. 2010 17:19:52
Prodej
Více
Prodám Budweis.org
5 000 Kč
0 příhozů
Prémiová doména k prodeji 24k.cz
100 000 Kč
0 příhozů
Platební prsteny CZ/SK – DNEŠNÍ EXKLUZIVNÍ SLEVA 50 000 Kč NA PRODEJ 4 DOMÉN
150 000 Kč
0 příhozů
Domynasplatky.cz – prodej domeny pro vaší firmu
2 450 Kč
0 příhozů
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: