熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> PHP編程 >> 正文

PHP生成雪花背景的網站驗證碼

2013-11-15 12:29:42  來源: PHP編程 

  以下為引用的內容

<?session_start();?>
<FORM METHOD=POST ACTION="">
<input type=text name=number maxlength=><img src="YanZhengMaphp?act=init">
<INPUT TYPE="submit" name="sub">
</FORM>
<?
//檢驗校驗碼
if(isset($HTTP_POST_VARS["sub"])):
if($HTTP_POST_VARS["number"] != $HTTP_SESSION_VARS[login_check_number] || empty($HTTP_POST_VARS["number"])){
    echo "校驗碼不正確!" ;
}else{
    echo"驗證碼通過!";
}
endif;
show_source(testphp);
//以上本頁的源碼

  
//以下是生成驗證碼的源碼
show_source(YanZhengMaphp);
?>
<?php
session_start();
session_register("login_check_number");
//昨晚看到了chianren上的驗證碼效果就考慮了一下用PHP的GD庫完成了類似功能
//先成生背景再把生成的驗證碼放上去
$img_height=;    //先定義圖片的長
$img_width=;
if($HTTP_GET_VARS["act"]== "init"){
    //srand(microtime() * );//PHPsrand不是必須的
    for($Tmpa=;$Tmpa<;$Tmpa++){
        $nmsg=dechex(rand());
    }//by sports

  
    $HTTP_SESSION_VARS[login_check_number] = $nmsg;

  //$HTTP_SESSION_VARS[login_check_number] = strval(mt_rand(""""));    //生成位的隨機數放入session中
    //誰能做下補充可以同時生成字母和數字啊??由sports完成了

  $aimg = imageCreate($img_height$img_width);    //生成圖片
    ImageColorAllocate($aimg );            //圖片底色ImageColorAllocate第次定義顏色PHP就認為是底色了
    $black = ImageColorAllocate($aimg );        //定義需要的黑色
    ImageRectangle($aimg$img_height$img_width$black);//先成一黑色的矩形把圖片包圍

  //下面該生成雪花背景了其實就是在圖片上生成一些符號
    for ($i=; $i<=; $i++) {    //先用個做測試
        imageString($aimgmt_rand($img_height)mt_rand($img_width)"*"imageColorAllocate($aimgmt_rand()mt_rand()mt_rand()));
        //哈看到了吧其實也不是雪花就是生成*號而已為了使它們看起來"雜亂無章色"就得在個生成它們的時候讓它們的位置顏色甚至大小都用隨機數rand()或mt_rand都可以完成
    }

  //上面生成了背景現在就該把已經生成的隨機數放上來了道理和上面差不多隨機數個地放同時讓他們的位置大小顏色都用成隨機數~~
    //為了區別於背景這裡的顏色不超過上面的不小於
    for ($i=;$i<strlen($HTTP_SESSION_VARS[login_check_number]);$i++){
        imageString($aimg mt_rand()$i*$img_height/+mt_rand()mt_rand($img_width/) $HTTP_SESSION_VARS[login_check_number][$i]imageColorAllocate($aimgmt_rand()mt_rand()mt_rand()));
    }
    Header("Contenttype: image/png");    //告訴浏覽器下面的數據是圖片而不要按文字顯示
    ImagePng($aimg);                    //生成png格式嘿嘿效果蠻像回事的嘛
    ImageDestroy($aimg);
}

  ?>


From:http://tw.wingwit.com/Article/program/PHP/201311/21058.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.