1-------簡單驗證碼
validitPicture.php
<?php
//生成驗證碼圖片
session_start();
Header("Content-type: image/PNG");
srand((double)microtime()*1000000);
$roundNum=rand(1000,9999);
//把隨機數(shù)存入session以便以后用
$_SESSION["sessionRound"]=$roundNum;
$im = imagecreate(58,28);
$red = ImageColorAllocate($im, 255,0,0);
$blue = ImageColorAllocate($im, 0,255,0);
//局域填充,相當于背景
imagefill($im,68,30,$red);
//將四位整數(shù)驗證碼繪入圖片
imagestring($im, 5, 10, 8, $roundNum, $blue);
for($i=0;$i<50;$i++)//加入干擾象素
{
imagesetpixel($im, rand()p , rand()0 , $black);
}
ImagePNG($im);
ImageDestroy($im);
?>
引用:
<td>驗證碼</td><tdwidth="20%">
<input name="validt" type="text" size="10"maxlength="4"/></td><tdcolspan="3" width="80%">
<img src="validitPicture.php" name="validitpic"align="absmiddle"/></td>
2---一般驗證碼
text.php
<?
//checkNum.php
session_start();
function random($len)
{
$srcstr="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
mt_srand();
$strs="";
for($i=0;$i<$len;$i++){
$strs.=$srcstr[mt_rand(0,35)];
}
return strtoupper($strs);
}
$str=random(4); //隨機生成的字符串
$width = 50; //驗證碼圖片的寬度
$height = 25; //驗證碼圖片的高度
@header("Content-Type:image/png");
$_SESSION["code"] = $str;
//echo $str;
$im=imagecreate($width,$height);
//背景色
$back=imagecolorallocate($im,0xFF,0xFF,0xFF);
//模糊點顏色
$pix=imagecolorallocate($im,187,230,247);
//字體色
$font=imagecolorallocate($im,41,163,238);
//繪模糊作用的點
mt_srand();
for($i=0;$i<1000;$i++)
{
imagesetpixel($im,mt_rand(0,$width),mt_rand(0,$height),$pix);
}
imagestring($im, 5, 7, 5,$str, $font);
imagerectangle($im,0,0,$width-1,$height-1,$font);
imagepng($im);
imagedestroy($im);
$_SESSION["code"] = $str;
?>
引用
<?php
session_start();
echo "<img src=text.php border=0align=absbottom>";//生成圖片
?>
3----一般簡單
<?
session_start();
function img(){
$im=imagecreate(50,20);
$white=imagecolorallocate($im,255,255,255);
$black=imagecolorallocate($im,0,0,0);
imagerectangle($im,0,0,49,19,$black);
$temp=0;
$temp3="";
$_SESSION["img"] = null;
for ($i=1;$i<5;$i++){
$temp1=rand(0,9);
$temp3=$temp3.strval($temp1);
$color1=rand(0,255);
$color2=rand(0,255);
$color3=rand(0,255);
$color=imagecolorallocate($im,$color1,$color2,$color3);
imagechar($im,16,5+$temp,2,$temp1,$color);
$temp=$temp+10;
for ($j=0;$j<15;$j++){
$point_x=rand(2,48);
$point_y=rand(2,18);
$color=imagecolorallocate($im,$color1,$color2,$color3);
imagesetpixel($im,$point_x,$point_y,$color);
}
}
$_SESSION["img"]=$temp3;
imagegif($im);
imagedestory($im);
}
img();
?>
4---一般驗證碼
<?
Header("Content-type:image/png");
//定義header,聲明圖片文件,最好是png,無版權之擾;
//生成新的四位整數(shù)驗證碼
session_start();//開啟session;
$authnum_session = '';
$str = 'abcdefghijkmnpqrstuvwxyz1234567890';
//定義用來顯示在圖片上的數(shù)字和字母;
$l = strlen($str); //得到字串的長度;
//循環(huán)隨機抽取四位前面定義的字母和數(shù)字;
for($i=1;$i<=4;$i++)
{
$num=rand(0,$l-1);
//每次隨機抽取一位數(shù)字;從第一個字到該字串最大長度,
//減1是因為截取字符是從0開始起算;這樣34字符任意都有可能排在其中;
$authnum_session.= $str[$num];
//將通過數(shù)字得來的字符連起來一共是四位;
}
session_register("authnum_session");
//用session來做驗證也不錯;注冊session,名稱為authnum_session,
//其它頁面只要包含了該圖片
//即可以通過$_SESSION["authnum_session"]來調(diào)用
//生成驗證碼圖片,
srand((double)microtime()*1000000);
$im = imagecreate(50,20);//圖片寬與高;
//主要用到黑白灰三種色;
$black = ImageColorAllocate($im, 0,0,0);
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200);
//將四位整數(shù)驗證碼繪入圖片
imagefill($im,68,30,$gray);
//如不用干擾線,注釋就行了;
$li = ImageColorAllocate($im, 220,220,220);
for($i=0;$i<3;$i++)
{//加入3條干擾線;也可以不要;視情況而定,因為可能影響用戶輸入;
imageline($im,rand(0,30),rand(0,21),rand(20,40),rand(0,21),$li);
}
//字符在圖片的位置;
imagestring($im, 5, 8, 2, $authnum_session, $white);
for($i=0;$i<90;$i++)
{//加入干擾象素
imagesetpixel($im, rand()p , rand()0 , $gray);
}
ImagePNG($im);
ImageDestroy($im);
?>
5---一般偏上
text.php
<?php
//需GD庫支持
session_start();
session_register("login_check_number");
//先成生背景,再把生成的驗證碼放上去
//先定義圖片的長、寬
$img_height=60;
$img_width=20;
if($_GET["act"]== "init")
{
for($Tmpa=0;$Tmpa<4;$Tmpa++)
{
$nmsg.=dechex(rand(0,15)); // 生成隨機數(shù),并轉成十六進制
}
$_SESSION[login_check_number] = $nmsg;
$aimg =imageCreate($img_height,$img_width); //生成圖片
ImageColorAllocate($aimg, 255,255,255);//圖片底色,ImageColorAllocate第1次定義顏色PHP就認為是底色了
$black =ImageColorAllocate($aimg, 0,0,0); //定義需要的黑色
ImageRectangle($aimg,0,0,$img_height-1,$img_width-1,$black);//先成一黑色的矩形把圖片包圍
//下面該生成雪花背景了,其實就是在圖片上生成一些符號
for ($i=1;$i<=100; $i++)//先用100個做測試
{
imageString($aimg,1,mt_rand(1,$img_height),mt_rand(1,$img_width),"*",imageColorAllocate($aimg,mt_rand(200,255),mt_rand(200,255),mt_rand(200,255)));
//就是生成*號而已。為了使它們看起來"雜亂無章、5顏6色",就得在1個1個生成它們的時候,讓它們的位置、顏色,甚至大小都用隨機數(shù),rand()或mt_rand都可以完成。
}
//上面生成了背景,現(xiàn)在就該把已經(jīng)生成的隨機數(shù)放上來了。道理和上面差不多,隨機數(shù)1個1個地放,同時讓他們的位置、大小、顏色都用成隨機數(shù)~~
//為了區(qū)別于背景,這里的顏色不超過200,上面的不小于200
for($i=0;$i<strlen($_SESSION[login_check_number]);$i++)
{
imageString($aimg,mt_rand(3,5),$i*$img_height/4+mt_rand(1,10),mt_rand(1,$img_width/4),$_SESSION[login_check_number][$i],imageColorAllocate($aimg,mt_rand(0,100),mt_rand(0,150),mt_rand(0,200)));
}
Header("Content-type: image/png"); //告訴瀏覽器,下面的數(shù)據(jù)是圖片,而不要按文字顯示
ImagePng($aimg); //生成png格式
ImageDestroy($aimg);
}
?>
調(diào)用
<html>
<body>
<img src="text.php?act=init"/>
</body>
</html>
$_SESSION[login_check_number])就是圖片上的值
6-------一般
<?php
//生成驗證碼圖片
Header("Content-type: image/PNG");
srand((double)microtime()*1000000);//播下一個生成隨機數(shù)字的種子,以方便下面隨機數(shù)生成的使用
session_start();//將隨機數(shù)存入session中
$_SESSION['authnum']="";
$im = imagecreate(62,20); //制定圖片背景大小
$black = ImageColorAllocate($im, 0,0,0); //設定三種顏色
$white = ImageColorAllocate($im, 255,255,255);
$gray = ImageColorAllocate($im, 200,200,200);
imagefill($im,0,0,$gray); //采用區(qū)域填充法,設定(0,0)
while(($authnum=rand()0000)<10000);
//將四位整數(shù)驗證碼繪入圖片
$_SESSION['authnum']=$authnum;
imagestring($im, 5, 10, 3, $authnum, $black);
// 用 col 顏色將字符串 s 畫到 image 所代表的圖像的 x,y 座標處(圖像的左上角為 0, 0)。
//如果 font 是 1,2,3,4 或 5,則使用內(nèi)置字體
for($i=0;$i<200;$i++) //加入干擾象素
{
$randcolor =ImageColorallocate($im,rand(0,255),rand(0,255),rand(0,255));
imagesetpixel($im, rand()p , rand()0 , $randcolor);
}
ImagePNG($im);
ImageDestroy($im);
?>
7-----中文驗證碼
<?php
Header("Content-type: image/PNG");
$str ="的一是在了不和有大這主中人上為們地個用工時要動國產(chǎn)以我到他會作來分生對于學下級就年階義發(fā)成部民可出能方進同行面說種過命度革而多子后自社加小機也經(jīng)力線本電高量長黨得實家定深法表著水理化爭現(xiàn)所二起政三好十戰(zhàn)無農(nóng)使性前等反體合斗路圖把結第里正新開論之物從當兩些還天資事隊批如應形想制心樣干都向變關點育重其思與間內(nèi)去因件日利相由壓員氣業(yè)代全組數(shù)果期導平各基或月毛然問比展那它最及外沒看治提五解系林者米群頭意只明四道馬認次文通但條較克又公孔領軍流入接席位情運器并飛原油放立題質指建區(qū)驗活眾很教決特此常石強極土少已根共直團統(tǒng)式轉別造切九你取西持總料連任志觀調(diào)七么山程百報更見必真保熱委手改管處己將修支識病象幾先老光專什六型具示復安帶每東增則完風回南廣勞輪科北打積車計給節(jié)做務被整聯(lián)步類集號列溫裝即毫知軸研單色堅據(jù)速防史拉世設達爾場織歷花受求傳口斷況采精金界品判參層止邊清至萬確究書術狀廠須離再目海交權且兒青才證低越際八試規(guī)斯近注辦布門鐵需走議縣兵固除般引齒千勝細影濟白格效置推空配刀葉率述今選養(yǎng)德話查差半敵始片施響收華覺備名紅續(xù)均藥標記難存測士身緊液派準斤角降維板許破述技消底床田勢端感往神便賀村構照容非搞亞磨族火段算適講按值美態(tài)黃易彪服早班麥削信排臺聲該擊素張密害侯草何樹肥繼右屬市嚴徑螺檢左頁抗蘇顯苦英快稱壞移約巴材省黑武培著河帝僅針怎植京助升王眼她抓含苗副雜普談圍食射源例致酸舊卻充足短劃劑宣環(huán)落首尺波承粉踐府魚隨考刻靠夠滿夫失包住促枝局菌桿周護巖師舉曲春元超負砂封換太模貧減陽揚江析畝木言球朝醫(yī)校古呢稻宋聽唯輸滑站另衛(wèi)字鼓剛寫劉微略范供阿塊某功套友限項余倒卷創(chuàng)律雨讓骨遠幫初皮播優(yōu)占死毒圈偉季訓控激找叫云互跟裂糧粒母練塞鋼頂策雙留誤礎吸阻故寸盾晚絲女散焊功株親院冷徹彈錯散商視藝滅版烈零室輕血倍缺厘泵察絕富城沖噴壤簡否柱李望盤磁雄似困鞏益洲脫投送奴側潤蓋揮距觸星松送獲興獨官混紀依未突架寬冬章濕偏紋吃執(zhí)閥礦寨責熟穩(wěn)奪硬價努翻奇甲預職評讀背協(xié)損棉侵灰雖矛厚羅泥辟告卵箱掌氧恩愛停曾溶營終綱孟錢待盡俄縮沙退陳討奮械載胞幼哪剝迫旋征槽倒握擔仍呀鮮吧卡粗介鉆逐弱腳怕鹽末陰豐編印蜂急拿擴傷飛露核緣游振操央伍域甚迅輝異序免紙夜鄉(xiāng)久隸缸夾念蘭映溝乙嗎儒殺汽磷艱晶插埃燃歡鐵補咱芽永瓦傾陣碳演威附牙芽永瓦斜灌歐獻順豬洋腐請透司危括脈宜笑若尾束壯暴企菜穗楚漢愈綠拖牛份染既秋遍鍛玉夏療尖殖井費州訪吹榮銅沿替滾客召旱悟刺腦措貫藏敢令隙爐殼硫煤迎鑄粘探臨薄旬善??v擇禮愿伏殘雷延煙句純漸耕跑澤慢栽魯赤繁境潮橫掉錐希池敗船假亮謂托伙哲懷割擺貢呈勁財儀沉煉麻罪祖息車穿貨銷齊鼠抽畫飼龍庫守筑房歌寒喜哥洗蝕廢納腹乎錄鏡婦惡脂莊擦險贊鐘搖典柄辯竹谷賣亂虛橋奧伯趕垂途額壁網(wǎng)截野遺靜謀弄掛課鎮(zhèn)妄盛耐援扎慮鍵歸符慶聚繞摩忙舞遇索顧膠羊湖釘仁音跡碎伸燈避泛亡答勇頻皇柳哈揭甘諾概憲濃島襲誰洪謝炮澆斑訊懂靈蛋閉孩釋乳巨徒私銀伊景坦累勻霉杜樂勒隔彎績招紹胡呼痛峰零柴簧午跳居尚丁秦稍追梁折耗堿殊崗挖氏刃劇堆赫荷胸衡勤膜篇登駐案刊秧緩凸役剪川雪鏈漁啦臉戶洛孢勃盟買楊宗焦賽旗濾硅炭股坐蒸凝竟陷槍黎救冒暗洞犯筒您宋弧爆謬涂味津臂障褐陸啊健尊豆拔莫抵桑坡縫警挑污冰柬嘴啥飯塑寄趙喊墊康遵牧遭幅園腔訂香肉弟屋敏恢忘衣孫齡嶺騙休借丹渡耳刨虎筆稀昆浪薩茶滴淺擁穴覆倫娘噸浸袖珠雌媽紫戲塔錘震歲貌潔剖牢鋒疑霸閃埔猛訴刷狠忽災鬧喬唐漏聞沈熔氯荒莖男凡搶像漿旁玻亦忠唱蒙予紛捕鎖尤乘烏智淡允叛畜俘摸銹掃畢璃寶芯爺鑒秘凈蔣鈣肩騰枯拋軌堂拌爸循誘祝勵肯酒繩窮塘燥泡袋朗喂鋁軟渠顆慣貿(mào)糞綜墻趨彼屆墨礙啟逆卸航霧冠丙街萊貝輻腸付吉滲瑞驚頓擠秒懸姆爛森糖圣凹陶詞遲蠶億矩";
$imgWidth = 140;
$imgHeight = 40;
$authimg = imagecreate($imgWidth,$imgHeight);
$bgColor = ImageColorAllocate($authimg,255,255,255);
$fontfile = "heiti.ttf";
$white=imagecolorallocate($authimg,234,185,95);
imagearc($authimg, 150, 8, 20, 20, 75, 170, $white);
imagearc($authimg, 180, 7,50, 30, 75, 175, $white);
imageline($authimg,20,20,180,30,$white);
imageline($authimg,20,18,170,50,$white);
imageline($authimg,25,50,80,50,$white);
$noise_num = 800;
$line_num = 20;
imagecolorallocate($authimg,0xff,0xff,0xff);
$rectangle_color=imagecolorallocate($authimg,0xAA,0xAA,0xAA);
$noise_color=imagecolorallocate($authimg,0x00,0x00,0x00);
$font_color=imagecolorallocate($authimg,0x00,0x00,0x00);
$line_color=imagecolorallocate($authimg,0x00,0x00,0x00);
for($i=0;$i<$noise_num;$i++){
imagesetpixel($authimg,mt_rand(0,$imgWidth),mt_rand(0,$imgHeight),$noise_color);
}
for($i=0;$i<$line_num;$i++){
imageline($authimg,mt_rand(0,$imgWidth),mt_rand(0,$imgHeight),mt_rand(0,$imgWidth),mt_rand(0,$imgHeight),$line_color);
}
$randnum=rand(0,strlen($str)-4);
if($randnum%2)$randnum+=1;
$str = substr($str,$randnum,8);
$str = iconv("GB2312","UTF-8",$str);
ImageTTFText($authimg, 20, 0, 16, 30, $font_color, $fontfile,$str);
ImagePNG($authimg);
ImageDestroy($authimg);
?>
愛華網(wǎng)



