Помогите дописать капчу (Советы, Помощь, Идеи)

Print RSS
26

Author
Чатланин
0
Не знаю, что добавить туда, но все, что б я не делал выглядит отвратительно - то не распозноваемо пользователем, то просто не красиво! sad некоторые из вас занимались постраением капчей, и может кто поможет из своих проделок посоветует пару методов как хоть маленько защититься от спама и просто преукрасить слегка капчу!

................
Author
Чатланин
0
собственно, сам класс
<?php
# ####### ####### # CLASS "CAPTCHA" # ####### ####### #
class CAPTCHA {
const CODE = "0123456789QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm";
private $protect = "";
private $font = "";
private $image = "";
private $width = 0;
private $height = 0;
# ####### ####### # CONSTRUCT # ####### ####### #
# @param integer $lenght #
# @param integer $width #
# @param integer $height #
public function __construct($lenght = 5, $width = 120, $height = 60) {
$this -> width = $width;
$this -> height = $height;
$this -> protect = $this -> generate_code($lenght);
$this -> font = $this -> generate_font("");
}
# ####### ####### # GENERATE CODE # ####### ####### #
# @param integer $lenght #
private function generate_code($lenght = 5) {
$protect = $this -> protect;
$code = str_split(self::CODE);
for ($i = 0; $i < $lenght; $i++) {
$protect .= $code[array_rand($code)];
}
return $protect;
}
# ####### ####### # GENERATE FONT # ####### ####### #
# @param string $fonts_dir #
private function generate_font($fonts_dir = "fonts/") {
$array_fonts = array();
$glob_fonts = glob($fonts_dir."*.ttf");
foreach ($glob_fonts as $basename) {
$array_fonts[] = $fonts_dir.basename($basename);
}
return $array_fonts[mt_rand(0, count($array_fonts) - 1)];
}
# ####### ####### # CREATE IMAGE # ####### ####### #
public function create_image() {
$image = imagecreatetruecolor($this -> width, $this -> height);
$bodycolor = imagecolorallocate($image, mt_rand(128, 255), mt_rand(128, 255), mt_rand(128, 255));
$textcolor = imagecolorallocate($image, 0, 0, 0);
$textcoloralpha = imagecolorallocatealpha($image, 0, 0, 0, 100);
$box = imagettfbbox(20, 0, $this -> font, $this -> protect);
$x = ($this -> width - $box[4]) / 2;
$y = ($this -> height - $box[5]) / 2;
imagefill($image, 0, 0, $bodycolor);
imagettftext($image, 20, 0, $x, $y, $textcoloralpha, $this -> font, $this -> protect);
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Content-type: image/png");
imagepng($image);
imagedestroy($image);
}
}
$c = new CAPTCHA();
$c -> create_image();
?>
Stickers / Tags / Rules / Top topics / Top Posts / Search