Board logo

標題: 驗證圖 [打印本頁]

作者: may    時間: 2011-5-22 09:40     標題: 驗證圖

<?php

    // 宣告為圖片檔,格式為 PNG
    header("Content-Type:image/PNG");
     
    // 自訂一個函數為 NewPassword   密碼長度設定為八個字元
    function NewPassword($pt=8){
        $password = "";   // 存放產生的密碼
        $str = "0123456789ahcgtifdkfHKRDHU";   // 產生的字元集
        $str_len = strlen($str);  // strlen() 取得字串的長度
        for($i=1;$i<=$pt;$i++){     
            $password .= $str[rand()%$str_len];   // 亂數產生str陣列的索引值
        }
        return $password;
    }
     

    // 設定一個亂數種子
    srand((double)microtime()*1000000); // 1
     
    // 設定圖片大小為 200*28   ImageCreate() = 產生一張圖片
    $im = ImageCreate(200, 28);
     
    // 宣告圖片 $im 會使用到的顏色
    // ImageColorAllocate(指定的圖片,R,G,B)
    $back = ImageColorAllocate($im, 255,255,204);  // lightYellow
    $font = ImageColorAllocate($im, 255,5,10);  // black
    $point = ImageColorAllocate($im,255,0,0);  // red 1
    $point2 = ImageColorAllocate($im,15,5,17);  // red 1
    $point3 = ImageColorAllocate($im,162,51,170);  // red 1
    // 填滿圖片的底色 (指定的圖片,x,y,顏色)
    ImageFill($im, 0, 0, $back);
    // 寫入文字  (指定的圖片,文字大小,x,y,顏色)
     
    $num1 = NewPassword();  // 改成亂數產生數字
     
    ImageString($im,20,50,5,$num1,$font);

    // 產生干擾的小點
    for($i=0;$i<500;$i++){
        ImageSetPixel($im, rand()%200, rand()%28, $point);
    }
    for($i=0;$i<300;$i++){
        ImageSetPixel($im, rand()%200, rand()%28, $point2);
    }
    for($i=0;$i<20;$i++){
        // (指定圖片,x,y,線條寬度,線條長度,顏色)
        //ImageEllipse($im, rand()%200, rand()%28,2,12, $point3);
    }
     
    ImagePNG($im);  //產出圖片
    ImageDestroy($im);  // 銷毀記憶體
?>




歡迎光臨 種子論壇 | 高雄市資訊培育協會學員討論區 (http://istak.org.tw/seed/) Powered by Discuz! 7.2