php隨機生成驗證圖片

爲了防止用戶利用機器人自動註冊、登陸、灌水,如今網站通常都採用了驗證碼技術,就是將一串隨機產生的數字或符號,生成一幅圖片,圖片里加上一些干擾象素(防止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

相關文章
相關標籤/搜索