爲了防止用戶利用機器人自動註冊、登陸、灌水,如今網站通常都採用了驗證碼技術,就是將一串隨機產生的數字或符號,生成一幅圖片,圖片里加上一些干擾象素(防止OCR),由用戶肉眼識別其中的驗證碼信息,輸入表單提交網站驗證,驗證成功後才能使用某項功能。php
昨天作學習有一個做業須要本身寫圖片驗證碼,寫完以後我把它記錄下來做爲一篇筆記。html
先展現一下我作出來的效果(本身也可根據本身的要求對圖片背景、隨機數位數、顏色等進行調整)session
php代碼以下:函數
文件名: idcode.php學習
<?php session_start();//開啓會話 $img = imagecreatetruecolor(60, 30);//建立真彩圖像資源,大小60*30 $black = imagecolorallocate($img, 0x00, 0x00, 0x00);//分配一個黑色 $green = imagecolorallocate($img, 0x00, 0xFF, 0x00);//分配一個綠色 $white = imagecolorallocate($img, 0xFF, 0xFF, 0xFF);//分配一個白色 imagefill($img,0,0,$white);// 從左上角開始填充白色,即背景顏色爲白色 //生成隨機的驗證碼 $code = ''; for($i = 0; $i < 4; $i++) { $code .= rand(0, 9); } $_SESSION['vCode']=$code;//加入會話變量中 imagestring($img, 5, 8, 8, $code, $black);//imagestring ($image , $font , $x , $y ,$s ,$col ) //加入噪點干擾,阻止機器識別 for($i=0;$i<100;$i++) { imagesetpixel($img, rand(0, 60) , rand(0, 30) , $black);//在圖片上繪出一點。參數 x、y 爲欲繪點的座標,參數 col 表示該點的顏色 imagesetpixel($img, rand(0, 60) , rand(0, 30) , $green);//繪製綠色的點 } //輸出驗證碼 header("content-type: image/png");//說明欲輸出的圖片類型格式 imagepng($img);//函數用來創建一張 PNG 格式圖形 imagedestroy($img);//銷燬圖像,釋放與 $img 關聯的內存
引入HTML中:網站
<img src="php/idcode.php" alt="">
最後個人效果以下:code