Вход Регистрация
Файл: mc-2.6/utils/captcha.php
Строк: 92
<?php
/**
 * MobileCMS
 *
 * Open source content management system for mobile sites
 *
 * @author MobileCMS Team <support@mobilecms.ru>
 * @copyright Copyright (c) 2011, MobileCMS Team
 * @link http://mobilecms.ru Official site
 * @license http://opensource.org/licenses/gpl-license.php GNU Public License
 */

ini_set('session.save_path''../tmp/');
session_name('sid');
session_start();

$data = array(
    
// Ширина изображения
    
'width'             =>  '90',
    
// Высота изображения
    
'height'            =>  '40',
    
// Размер шрифта
    
'font_size'         =>  '10',
    
// Кол-во символов для ввода
    
'let_amount'        =>  '4',
    
// Кол-во "помех" на фоне
    
'fon_let_amount'    =>  '0',
    
// Папка со шрифтами
    
'path_fonts'        =>  '../utils/fonts/',
    
// Символы на изображении
    
'letters'           =>  array('0''2''3''4''5''6''7''9'),
    
// Используемые цвета
    
'colors'            =>  array('10''30''50''70''90''110''130''150''170''190''210')
);

// Создание изображения
$src imagecreatetruecolor($data['width'], $data['height']);
$fon imagecolorallocate($src255255255);

imagefill($src00$fon);

// Выбор шрифта
$fonts = array();
$dir opendir($data['path_fonts']);

while(
$fontName readdir($dir)) {
    if (
$fontName != '.' && $fontName != '..'$fonts[] = $fontName;
}

closedir($dir);

// Нанесение "помех"
for($i=0$i<$data['fon_let_amount']; $i++) {
    
$color imagecolorallocatealpha($srcrand(0255), rand(0255), rand(0255), 100);
    
$font $data['path_fonts'] . $fonts[rand(0sizeof($fonts)-1)];
    
$letter $data['letters'][rand(0sizeof($data['letters'])-1)];
    
$size rand($data['font_size']-2$data['font_size']+2);
    
imagettftext($src$sizerand(045), rand($data['width']*0.1$data['width']-$data['width']*0.1), rand($data['height']*0.2$data['height']), $color$font$letter);
}

// Нанесение символов
for($i=0$i<$data['let_amount']; $i++) {
    
$color imagecolorallocatealpha($src$data['colors'][rand(0sizeof($data['colors'])-1)], $data['colors'][rand(0sizeof($data['colors'])-1)], $data['colors'][rand(0sizeof($data['colors'])-1)], rand(20,40));
    
$font $data['path_fonts'] . $fonts[rand(0sizeof($fonts)-1)];
    
$letter $data['letters'][rand(0sizeof($data['letters'])-1)];
    
$size rand($data['font_size']*2.1-2$data['font_size']*2.1+2);
    
$x = ($i+1)*$data['font_size'] + rand(47);
    
$y = (($data['height']*2)/3) + rand(05);
    
$cod[] = $letter;
    
imagettftext($src$sizerand(015), $x$y$color$font$letter);
}

// Антикеширование
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0"false);
header("Pragma: no-cache");

// Создание рисунка в зависимости от доступного формата
if (function_exists("imagepng")) {
    
header("Content-type: image/png");
    
imagepng($src);
}
elseif (
function_exists("imagegif")) {
    
header("Content-type: image/gif");
    
imagegif($src);
}
elseif (
function_exists("imagejpeg")) {
    
header("Content-type: image/jpeg");
    
imagejpeg($src);
}
else {
    die(
"No image support in this PHP server!");
}

// Записываем код в сессию
$_SESSION['captcha_code'] = implode(''$cod);

// Удаляем изображение
imagedestroy($src);
        
?>
Онлайн: 0
Реклама