Добрый вечер! у меня по заданию нужно сделать CaptchaTest(тоесть, как на многих сайтах генерируется картинка с случайными символами и нужно ввести эти символы ....) я все реализовал, но у меня по заданию должны генерироваться русские буквы ... а генерируются черт знает что ... проблема явно в кодировке, нигде не смог найти как это исправить! подскажие пожалуйста! Ниже приведены все коды программы .... CaptchaSecurityImages.php Код | <?php session_start();
class CaptchaSecurityImages {
//var $font = '/www_host/hosts/venom.z16.ru/methods/monofont.ttf'; //тут надо полный путь к шрифту прописать,если не работает //var $font = 'MTCORSVA.TTF'; //тут надо полный путь к шрифту прописать,если не работает //var $font = 'times.ttf'; //тут надо полный путь к шрифту прописать,если не работает var $font = 'GOTHIC.TTF';
function generateCode($characters) { /* генерация кода */ $possible = 'ячсмит'; $code = ''; $i = 0; while ($i < $characters) { $code.= substr($possible, mt_rand(0, strlen($possible)-1), 1); $i++; } return $code; }
function CaptchaSecurityImages($width='20',$height='40',$characters='6') { $code = $this->generateCode($characters); //$code = 'Malahov'; $font_size = 11; $image = @imagecreate($width, $height) or die('Cannot initialize new GD image stream'); //цвета $background_color = imagecolorallocate($image, 249, 213, 184); $text_color = imagecolorallocate($image, 252, 0, 243); $noise_color = imagecolorallocate($image, 255, 255, 255); /* генерируем случайные точки на фоне */ for( $i=0; $i<($width*$height)/3; $i++ ) { imagefilledellipse($image, mt_rand(0,$width), mt_rand(0,$height), 1, 1, $noise_color); } /* генерируем случайные линии на фоне */ for( $i=0; $i<($width*$height)/150; $i++ ) { imageline($image, mt_rand(0,$width), mt_rand(0,$height), mt_rand(0,$width), mt_rand(0,$height), $noise_color); } /* создаем некстовое поле и добавляем текст */ $textbox = imagettfbbox($font_size, 0, $this->font, $code) or die('Error in imagettfbbox function'); $x = ($width - $textbox[4])/2; $y = ($height - $textbox[5])/2; imagettftext($image, $font_size, -30, $x, $y, $text_color, $this->font , $code) or die('Error in imagettfbbox function');
/* ввыводим captcha в браузер */ header('Content-Type: image/jpeg'); imagejpeg($image); imagedestroy($image); $_SESSION['security_code'] = $code; //проверочный код }
}
$width = isset($_GET['width']) ? $_GET['width'] : '120'; $height = isset($_GET['height']) ? $_GET['height'] : '40'; $characters = isset($_GET['characters']) && $_GET['characters'] > 1 ? $_GET['characters'] : '6';
$captcha = new CaptchaSecurityImages($width,$height,$characters);
?>
|
index.php Код | <html> <title>Image</title> <form name="forma" action="regist.php" method="post"> <table border="2"> <tr> <td align="center"><font color=000000><b>Введите символы на изображении:</font></b><br> <img src="CaptchaSecurityImages.php?width=150&height=150&characters=6" /> </td> </tr> <tr align="center"> <td><input type="text" size="20" maxlength="6" name="text"></td> </tr> <tr align="center"> <td colspan="2"><input style="width:100%;" type="Submit" value="Проверить" name="submit"></td> </tr> </table> </form> </html>
|
regist.php Код | <? session_start(); function check_captcha($captcha) //проверка ввода провероного слова { if ($_SESSION['security_code'] == $captcha && !empty($_SESSION['security_code'])) { unset($_SESSION['security_code']); echo 'Код введен верно!><br /><a href="index.php">Назад</a>'; return 1; } else { $_SESSION["error1"]=1; echo 'Код введен <b>НЕ</b> верно!<br /><a href="index.php">Назад</a>'; return 0; } } ?>
<? check_captcha($_POST['text']); ?>
|
Это полностью вся программа ... прикрепить файл с программой не получилось ((( жду предложений ) заранее сасибо!))))
|