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

php仿QQ驗證碼的實例分析

2013-11-15 12:27:57  來源: 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=; $i<; $i++) $rndstring = chr(mt_rand());
$img_height=; //先定義圖片的長
$img_width=;
//如果支持GD則繪圖
if(function_exists("imagecreate"))
{
//Firefox部份情況會多次請求的問題秒內刷新頁面將不改變session
$ntime = time();
if(empty($_SESSION[dd_ckstr_last]) || empty($_SESSION[dd_ckstr]) || ($ntime $_SESSION[dd_ckstr_last] > ))
{
$_SESSION[dd_ckstr] = strtolower($rndstring);
$_SESSION[dd_ckstr_last] = $ntime;
}
$rndstring = $_SESSION[dd_ckstr];
$rndcodelen = strlen($rndstring);
//創建圖片並設置背景色
$im = imagecreate();
ImageColorAllocate($im );
//干擾線
$lineColor = ImageColorAllocate($im mt_rand()mt_rand()mt_rand());
for($j=;$j<=;$j=$j+)
{
imageline($im$j+mt_rand()$j+mt_rand()$lineColor);
}
//輸出文字
$fontColor = ImageColorAllocate($im mt_rand()mt_rand()mt_rand());
for($i=;$i<$rndcodelen;$i++)
{
$bc = mt_rand();
$rndstring[$i] = strtoupper($rndstring[$i]);
imagestring($immt_rand()$i*$img_height/+mt_rand()mt_rand($img_width/) $rndstring[$i] $fontColor);
}
header("Pragma:nocache"r"n");
header("CacheControl:nocache"r"n");
header("Expires:"r"n");
//輸出特定類型的圖片格式優先級為 gif > jpg >png
if(function_exists("imagepng"))
{
header("contenttype:image/png"r"n");
imagepng($im);
}
else
{
header("contenttype:image/jpeg"r"n");
imagejpeg($im);
}
ImageDestroy($im);
exit();
}
else
{
//不支持GD只輸出字母 ABCD
$_SESSION[dd_ckstr] = "abcd";
$_SESSION[dd_ckstr_last] = ;
header("contenttype:image/png"r"n");
header("Pragma:nocache"r"n");
header("CacheControl:nocache"r"n");
header("Expires:"r"n");
$fp = fopen("data/vdcodejpg""r");
echo fread($fpfilesize("data/vdcodejpg"));
fclose($fp);
exit();
}
?>
 
From:http://tw.wingwit.com/Article/program/PHP/201311/21002.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.