程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php仿QQ驗證碼的實例分析

php仿QQ驗證碼的實例分析

編輯:關於PHP編程
    本文介紹一個php實現的仿QQ中驗證碼的例子,QQ注冊或登錄時的驗證碼,大家都見過吧,本文給出的代碼,也可以實現那樣的驗證碼哦   有需要的朋友,參考下吧。
    復制代碼 代碼如下:
    <?php
    /**
    * 仿QQ驗證碼
    */
    //Session保存路徑
    $sessSavePath = dirname(__FILE__)."/../data/sessions/";
    if(is_writeable($sessSavePath) && is_readable($sessSavePath)){ session_save_path($sessSavePath); }
    session_start();
    //獲取隨機字符
    $rndstring = '';
    for($i=0; $i<4; $i++) $rndstring .= chr(mt_rand(65,90));
    $img_height=45; //先定義圖片的長、寬
    $img_width=10;
    //如果支持GD,則繪圖
    if(function_exists("imagecreate"))
    {
    //Firefox部份情況會多次請求的問題,5秒內刷新頁面將不改變session
    $ntime = time();
    if(empty($_SESSION['dd_ckstr_last']) || empty($_SESSION['dd_ckstr']) || ($ntime - $_SESSION['dd_ckstr_last'] > 5))
    {
    $_SESSION['dd_ckstr'] = strtolower($rndstring);
    $_SESSION['dd_ckstr_last'] = $ntime;
    }
    $rndstring = $_SESSION['dd_ckstr'];
    $rndcodelen = strlen($rndstring);
    //創建圖片,並設置背景色
    $im = imagecreate(46,20);
    ImageColorAllocate($im, 240,243,248);
    //干擾線
    $lineColor1 = ImageColorAllocate($im, mt_rand(174,218),mt_rand(190,225),mt_rand(217,237));
    for($j=1;$j<=2;$j=$j+3)
    {
    imageline($im,0,$j+mt_rand(1,15),48,$j+mt_rand(1,15),$lineColor1);
    }
    //輸出文字
    $fontColor = ImageColorAllocate($im, mt_rand(0,150),mt_rand(0,150),mt_rand(0,150));
    for($i=0;$i<$rndcodelen;$i++)
    {
    $bc = mt_rand(0,1);
    $rndstring[$i] = strtoupper($rndstring[$i]);
    imagestring($im,mt_rand(3,5),$i*$img_height/4+mt_rand(1,5),mt_rand(1,$img_width/2), $rndstring[$i], $fontColor);
    }
    header("Pragma:no-cache"r"n");
    header("Cache-Control:no-cache"r"n");
    header("Expires:0"r"n");
    //輸出特定類型的圖片格式,優先級為 gif -> jpg ->png
    if(function_exists("imagepng"))
    {
    header("content-type:image/png"r"n");
    imagepng($im);
    }
    else
    {
    header("content-type:image/jpeg"r"n");
    imagejpeg($im);
    }
    ImageDestroy($im);
    exit();
    }
    else
    {
    //不支持GD,只輸出字母 ABCD
    $_SESSION['dd_ckstr'] = "abcd";
    $_SESSION['dd_ckstr_last'] = '';
    header("content-type:image/png"r"n");
    header("Pragma:no-cache"r"n");
    header("Cache-Control:no-cache"r"n");
    header("Expires:0"r"n");
    $fp = fopen("data/vdcode.jpg","r");
    echo fread($fp,filesize("data/vdcode.jpg"));
    fclose($fp);
    exit();
    }
    ?>
     
    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved