За последние 24 часа нас посетили 18892 программиста и 1708 роботов. Сейчас ищут 920 программистов ...

проблема с capha

Тема в разделе "PHP для новичков", создана пользователем ainur777, 24 май 2013.

  1. ainur777

    ainur777 Активный пользователь

    С нами с:
    24 май 2013
    Сообщения:
    93
    Симпатии:
    0
    Проблема с прорисовкой кода, заключается в том что картинка не открывается и не генерирует код на картинке?

    Вот код:
    <p><img src="code/my_coden.php"></p>
    <p><input type="text" name="code"></p>


    Код my_coden.php где генерируется код:

    <?php
    // error_reporting(E_ALL);
    $DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
    define("code_dir", $DOCUMENT_ROOT."/code/my_codegen/");



    $DOCUMENT_ROOT = $_SERVER["DOCUMENT_ROOT"];
    define("code_dir", $DOCUMENT_ROOT."/code/my_codegen");


    function generate_code() //генерируем код
    {

    $hours = date("H"); // час
    $minuts = substr(date("H"), 0 , 1);// минута
    $mouns = date("m"); // месяц
    $year_day = date("z"); // день в году

    $str = $hours . $minuts . $mouns . $year_day; //создаем строку
    $str = base64(base64($str)); //дважды шифруем в base64
    $str = strrev($str);// реверс строки
    $str = substr($str, 2, 9); // извлекаем 9 символов, начиная с 2
    // Вам конечно же можно постваить другие значения, так как, если взломщики узнают, каким именно способом это все генерируется, то в защите не будет смысла.


    $array_mix = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
    srand ((float)microtime()*1000000);
    shuffle ($array_mix);
    }

    function img_code() //Прорисовка
    {

    header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
    header("Last-Modified: " . gmdate("D, d M Y H:i:s", 10000) . " GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
    header("Content-Type:image/png");
    //защита от кэширования

    $linenum = 2; //линии
    $img_arr = array(
    "codegen.png",//фон изображения.
    "codegen0.png"//фон изображения.
    );

    $font_arr = array();
    $font_arr[0]["fname"] = "verdana.ttf"; //ttf шрифты
    $font_arr[0]["size"] = 16;//размер
    $font_arr[1]["fname"] = "times.ttf"; //ttf шрифты
    $font_arr[1]["size"] = 16;//размер

    $n = rand(0,sizeof($font_arr)-1);
    $img_fn = $img_arr[rand(0, sizeof($img_arr)-1)];
    $im = imagecreatefrompng (code_dir . $img_fn); //создаем изображение со случайным фоном

    for ($i=0; $i<$linenum; $i++)
    {
    //рисуем линии
    $color = imagecolorallocate($im, rand(0, 150), rand(0, 100), rand(0, 150));
    imageline($im, rand(0, 20), rand(1, 50), rand(150, 180), rand(1, 50), $color);
    }

    $color = imagecolorallocate($im, rand(0, 200), 0, rand(0, 200));
    imagettftext ($im, $font_arr[$n]["size"], rand(-4, 4), rand(10, 45), rand(20, 35), $color, code_dir.$font_arr[$n]["fname"], generate_code());//накладываем код

    for ($i=0; $i<$linenum; $i++)
    {
    $color = imagecolorallocate($im, rand(0, 255), rand(0, 200), rand(0, 255));
    imageline($im, rand(0, 20), rand(1, 50), rand(150, 180), rand(1, 50), $color);
    }

    ImagePNG ($im);
    ImageDestroy ($im);
    }

    img_code();
    ?>
     
  2. bkm

    bkm Активный пользователь

    С нами с:
    22 окт 2009
    Сообщения:
    299
    Симпатии:
    0
  3. ainur777

    ainur777 Активный пользователь

    С нами с:
    24 май 2013
    Сообщения:
    93
    Симпатии:
    0
    Нужен личный, просто надо разобраться с кодом...Что то видимо я пропускаю...