php隨機生成驗證圖片


為了防止用戶利用機器人自動注冊、登錄、灌水,現在網站一般都采用了驗證碼技術,就是將一串隨機產生的數字或符號,生成一幅圖片,圖片里加上一些干擾象素(防止OCR),由用戶肉眼識別其中的驗證碼信息,輸入表單提交網站驗證,驗證成功后才能使用某項功能。

昨天做學習有一個作業需要自己寫圖片驗證碼,寫完之后我把它記錄下來作為一篇筆記。

先展示一下我做出來的效果(自己也可根據自己的要求對圖片背景、隨機數位數、顏色等進行調整)

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="">

  最后我的效果如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM