PHP生成圖片驗(yàn)證碼demo【OOP面向?qū)ο蟀姹尽?/h1> Oct 09, 2016 am 09:19 AM
PHP生成圖片驗(yàn)證碼demo【OOP面向?qū)ο蟀姹尽?/p>
下面是我今天下午用PHP寫的一個生成圖片驗(yàn)證碼demo,僅供參考。
這個demo總共分為4個文件,具體代碼如下:
1、code.html中的代碼:
<!doctype html> <html> <head> <meta charset="utf-8" /> <title>登錄、注冊驗(yàn)證碼生成</title> </head> <body> <!-- * @Description 網(wǎng)站登錄/注冊驗(yàn)證碼生成類 * @Author 趙一鳴 * @OnlineDemo http://www.zymseo.com/demo/verificationcode/code.html * @Date 2016年10月6日 --> <form action="checkcode.php" method="post"> <input type="text" name="code" /><br/> <img src="/static/imghw/default1.png" data-src="showcode.php" class="lazy" onclick="this.setAttribute('src','showcode.php?'+Math.random())" / alt="PHP生成圖片驗(yàn)證碼demo【OOP面向?qū)ο蟀姹尽?quot; > <span>看不清?點(diǎn)擊圖片即可切換驗(yàn)證碼</span><br/> <input type="submit" name="sub" value="登錄/注冊" /> </form> </body> </html>
2、createcode.class.php中的代碼:
<?php /** * @Description 網(wǎng)站登錄/注冊驗(yàn)證碼生成類 * @Author 趙一鳴 * @OnlineDemo http://www.zymseo.com/demo/verificationcode/code.html * @Date 2016年10月6日 */ class Createcode{ //畫布資源 public $img; //畫布寬度 private $img_width; //畫布高度 private $img_height; //畫布顏色 private $img_bgcolor; //驗(yàn)證碼文字內(nèi)容 private $str_content; //生成的驗(yàn)證碼內(nèi)容 private $code_content; //驗(yàn)證碼顏色 private $code_content_color; //構(gòu)造函數(shù) public function __construct($img_width,$img_height,$str_content,$code_content_color){ if($this->gdcheck()){ $this->img_width = $img_width; $this->img_height = $img_height; $this->str_content = $str_content; $this->code_content_color = $code_content_color; $this->get_code(); $this->session_code(); } } //生成畫布 public function get_img(){ //定義畫布 $this->img = imagecreatetruecolor($this->img_width, $this->img_height); //畫布背景色 $this->img_bgcolor = imagecolorallocate($this->img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255)); //給畫圖填充背景色 imagefill($this->img, 0, 0, $this->img_bgcolor); //取得畫布的寬高 $img_width = imagesx($this->img); $img_height = imagesy($this->img); //畫布中插入驗(yàn)證碼 imagestring($this->img, 5, ($this->img_width/3), ($this->img_height/2.5), $this->code_content, imagecolorallocate($this->img, hexdec(substr($this->code_content_color, 1,2)), hexdec(substr($this->code_content_color, 3,2)), hexdec(substr($this->code_content_color, 5,2)))); //畫布中插入像素點(diǎn) $this->get_pix(); //畫布中插入直線 $this->get_line(); //畫布顯示 header('Content-type:image/png'); imagepng($this->img); } //生成驗(yàn)證碼 private function get_code(){ $str_content_len = strlen($this->str_content); for($i=0;$i<4;$i++){ $this->code_content .= substr($this->str_content, mt_rand(0,$str_content_len-1),1); } } //生成像素點(diǎn) private function get_pix(){ for($j=0;$j<300;$j++){ $image_pix .= imagesetpixel($this->img, mt_rand(0,$this->img_width), mt_rand(0,$this->img_height), imagecolorallocate($this->img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255))); } return $image_pix; } //生成直線 private function get_line(){ for($l=0;$l<2;$l++){ $img_line .= imageline($this->img, mt_rand(0,$this->img_width), mt_rand(0,$this->img_height), mt_rand(0,$this->img_width), mt_rand(0,$this->img_height), imagecolorallocate($this->img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255))); } return $img_line; } //session存儲驗(yàn)證碼 private function session_code(){ session_start(); $_SESSION['code'] = $this->code_content; } //判斷程序是否支持GD庫 private function gdcheck(){ if(extension_loaded('gd')){ return true; }else{ return false; exit(); } } }
3、checkcode.php中的代碼:
<?php /** * @Description 網(wǎng)站登錄/注冊驗(yàn)證碼生成類 * @Author 趙一鳴 * @OnlineDemo http://www.zymseo.com/demo/verificationcode/code.html * @Date 2016年10月6日 */ header('Content-type:text/html;charset="utf-8"'); session_start(); if($_POST['code']!=''){ if($_SESSION['code']==$_POST['code']){ echo '<script type="text/javascript"> alert("驗(yàn)證碼填寫成功"); history.go(-1); </script>'; }else{ echo '<script type="text/javascript"> alert("驗(yàn)證碼填寫失敗"); history.go(-1); </script>'; } }
4、showcode.php中的代碼:
<?php /** * @Description 網(wǎng)站登錄/注冊驗(yàn)證碼生成類 * @Author 趙一鳴 * @OnlineDemo http://www.zymseo.com/demo/verificationcode/code.html * @Date 2016年10月6日 */ function __autoload($classname){ include strtolower($classname).'.class.php'; } //定義驗(yàn)證碼的取值范圍 $str_content = 'abcdefghijklmnopqrstuvwxyz0123456789'; //驗(yàn)證碼文字顏色 $code_content_color = '#ffffff'; //初始化對象 $code = new Createcode(100,30,$str_content,$code_content_color); $code->get_img();
原文地址:http://www.zymseo.com/php/334.html
轉(zhuǎn)載請注明出處!
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas
Panduan Membina Rumput Wonder | Uma Musume Pretty Derby
1 bulan yang lalu
By Jack chen
<??>: 99 Malam di Hutan - Semua Lencana Dan Cara Membuka Kunci Mereka
4 minggu yang lalu
By DDD
Jadual Banner Pretty Derby Uma Musume (Julai 2025)
1 bulan yang lalu
By Jack chen
Panduan Suhu Rimworld Odyssey untuk Kapal dan Gravtech
3 minggu yang lalu
By Jack chen
Keselamatan Windows kosong atau tidak menunjukkan pilihan
1 bulan yang lalu
By 下次還敢

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)