小凱 發問時間: 電腦與網際網路程式設計 · 1 0 年前

PHP如何寫圖片驗證?

請問大家有寫過圖片驗證的程式嗎?

就是會有顯示一張圖,圖上面會有文字及英文,然後填入這個文字後,才可以放行...

有人寫過嗎?

已更新項目:

流浪玩家 您好!

我有試過您的的程式,可以run,但底是黑色的,是否可以在底色部分加一些干擾的畫面呢?

謝謝您

1 個解答

評分
  • 1 0 年前
    最佳解答

    在此提供您一個簡單的方式,

    先使用imagecreate建立一個圖形區塊,

    然後再定義黑與白的色彩,

    之後再生成一個由數字與英文大小寫的字串,

    再將字串作亂數處理,

    再取字串的前四碼,

    且把字串寫入SESSION,

    然後再將字串寫入圖形中即完成圖片!

    示範程式碼如下:

    <?php

    header("Content-type: image/png");

    $w=45;

    $h=25;

    $x=5;

    $y=5;

    $image=imagecreate($w,$h);

    $black=imagecolorallocate($image,0,0,0);

    $white=imagecolorallocate($image,255,255,255);

    $str='';

    for($i=0;$i<=9;$i++){

    $str.=$i;

    }

    for($i=65;$i<=90;$i++){

    $str.=chr($i);

    }

    for($i=97;$i<=122;$i++){

    $str.=chr($i);

    }

    $str=str_shuffle($str);

    $str=substr($str,0,4);

    $_SESSION['key']=$str;

    imagestring($image,5,$x,$y,$str,$white);

    imagepng($image);

    imagedestroy($image);

    ?>

    再將之存檔,

    然後再html檔內撰寫img標籤即可!

    例:

    <img src="image.php" border="0" />

    最後只要在登入時比對SESSION['key']與輸入的值是否相等即可!

    2007-10-06 21:22:30 補充:

    這只是一個很簡單的驗證碼,

    不過說真的都一定有辦法破解的!

    參考資料: 自己, 自己
還有問題?馬上發問,尋求解答。