글쓰기나 회원가입시 무단 입력방지를 위한 간단한 함수 입니다.


먼저 아래 소스를 복사해서 gd_secode.php 파일로 만듭니다. 랜덤 이미지를 만들기 위해 필요한 함수입니다.
<?php
 /*
 *************************   srand make   *************************
 */
 function makeRand($len=6)
 {
    $len = preg_replace ("|[^0-9]|", "", $len);
    if($len < 6)
    {
        $len = 6;
    }
    srand((float) microtime() * 10000000);
    $schar = array_rand($specialchar = array('A','Q','G','L','H'));

    $rand_keys = array_merge(range('A', 'Z'), range('z', 'a'), range(1, 9));
    shuffle($rand_keys);

    $data = false;
    for($i=0; $i<$len; $i++)
    {
        if($i === $schar)
        {
            $data .= $specialchar[$schar];
        }
        else
        {
            $data .= $rand_keys[$i];
        }
    }
    return $data;
 }

 function numRand($len=4)
 {
    $len = preg_replace ("|[^0-9]|", "", $len);
    if($len < 4)
    {
        $len = 4;
    }
    srand((float) microtime() * 10000000);
    $rand_keys = array_merge(range('1', '4'), range('5', '9'), range(1, 9));
    shuffle($rand_keys);

    $data = false;
    for($i=0; $i<$len; $i++)
    {
        $data .= $rand_keys[$i];
    }
    return $data;
 }

 function gdSecode($makeRand, $size=7)
 {
    $W = 78+(($size-7)*11);
    $H = 34;
    $png = ImageCreate($W, $H);
    $w = ImageColorAllocate($png, 255, 255, 255);
    $b = ImageColorAllocate($png, 0, 0, 0);

    for ($i=0; $i<$W; $i+=11)
    {
        imageline($png, $i, 0, $i, $H, $b);
    }

    for ($i=0; $i<$H; $i+=11)
    {
        imageline($png, 0, $i, $W, $i, $b);
    }
    ImageString($png, 6, 9, 11, $makeRand, $b);
    header("Content-type: image/png");
    ImagePng($png);
    ImageDestroy($png);
 }
?>

그런 다음에 아래 소스를 get_image.php 파일로 만듭니다. 이 파일은 이미지 파일로 사용할려고 합니다.
<?php
@session_start();

require_once(dirname(__FILE__) . '/gd_secode.php');


gdSecode($_SESSION["gd_second"]);
?>

사용 방법은 다음과 같습니다.

<?php
 require_once(dirname(__FILE__) . '/gd_secode.php');

 @session_start();
 
 $_SESSION["gd_second"] = makeRand(7);

 ?>

 <img src='get_image.php'>
 <input type='text' name='singup'>

0 댓글