日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

php验证码的制作

發布時間:2025/3/14 php 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 php验证码的制作 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 <?php 2 class Vcode { 3 private $width; // 4 private $height; // 5 private $num; //數量 6 private $code; //驗證碼 7 private $img; //圖像的資源 8 function __construct($width=120, $height=30, $num=4) { 9 $this->width = $width; 10 $this->height = $height; 11 $this->num = $num; 12 $this->code = $this->createcode(); 13 } 14 //獲取字符的驗證碼, 用于保存在服務器中 15 function getcode() { 16 return $this->code; 17 } 18 //輸出圖像 19 function outimg() { 20 //創建背景 (顏色, 大小, 邊框) 21 $this->createback(); 22 //畫字 (大小, 字體顏色) 23 $this->outstring(); 24 //干擾元素(點, 線條) 25 $this->setdisturbcolor(); 26 //輸出圖像 27 $this->printimg(); 28 } 29 //創建背景 30 private function createback() { 31 //創建資源 32 $this->img = imagecreatetruecolor($this->width, $this->height); 33 //設置隨機的背景顏色 34 $bgcolor = imagecolorallocate($this->img, rand(225, 255), rand(225, 255), rand(225, 255)); 35 //設置背景填充 36 imagefill($this->img, 0, 0, $bgcolor); 37 //畫邊框 38 $bordercolor = imagecolorallocate($this->img, 0, 0, 0); 39 imagerectangle($this->img, 0, 0, $this->width-1, $this->height-1, $bordercolor); 40 } 41 42 //畫字 43 private function outstring() { 44 for($i=0; $i<$this->num; $i++) { 45 $color= imagecolorallocate($this->img, rand(0, 128), rand(0, 128), rand(0, 128)); 46 $fontsize=rand(10,12); //字體大小 47 $x = 3+($this->width/$this->num)*$i; //水平位置 48 $y = rand(0, imagefontheight($fontsize)-3); 49 //畫出每個字符 50 imagechar($this->img, $fontsize, $x, $y, $this->code{$i}, $color); 51 } 52 } 53 54 //設置干擾元素 55 private function setdisturbcolor() { 56 //加上點數 57 for($i=0; $i<100; $i++) { 58 $color= imagecolorallocate($this->img, rand(0, 255), rand(0, 255), rand(0, 255)); 59 //給驗證碼圖片干擾點上色 60 imagesetpixel($this->img, rand(1, $this->width-2), rand(1, $this->height-2), $color); 61 //用color顏色在x,y坐標上畫一個點 62 } 63 64 //加線條 65 for($i=0; $i<5; $i++) { 66 $color= imagecolorallocate($this->img, rand(0, 255), rand(0, 128), rand(0, 255)); 67 //給驗證碼圖片干擾弧線上色 68 imagearc($this->img,rand(-10, $this->width+10), rand(-10, $this->height+10), rand(30, 300), rand(30, 300), 55,44, $color); 69 //畫弧線 70 } 71 } 72 73 //輸出圖像 74 private function printimg() { 75 if (imagetypes() & IMG_GIF) { 76 header("Content-type: image/gif"); 77 imagegif($this->img); 78 } elseif (function_exists("imagejpeg")) { 79 header("Content-type: image/jpeg"); 80 imagejpeg($this->img); 81 } elseif (imagetypes() & IMG_PNG) { 82 header("Content-type: image/png"); 83 imagepng($this->img); 84 } else { 85 die("No image support in this PHP server"); 86 } 87 88 } 89 90 //生成驗證碼字符串 91 private function createcode() { 92 $codes = "3456789abcdefghijkmnpqrstuvwxyABCDEFGHIJKLMNPQRSTUVWXY"; 93 // 去掉容易混淆的字符0oil012 94 $code = ""; 95 for($i=0; $i < $this->num; $i++) { 96 $code .=$codes{rand(0, strlen($codes)-1)};//rand()函數返回code字符串中任意一個位置 97 } 98 return $code; 99 } 100 101 //用于自動銷毀圖像資源 102 function __destruct() { 103 imagedestroy($this->img); 104 } 105 106 } 107 ?>

生成驗證碼的效果如圖所示,上面所示代碼的文件名為vcode.class.php;我們在code.php文件中開啟session,引用這個文件;

代碼如下:

<?php//開啟sessionsession_start();include "vcode.class.php";//構造方法$vcode = new Vcode();//將驗證碼放到服務器自己的空間保存一份$_SESSION['code'] = $vcode->getcode();//將驗證碼圖片輸出$vcode->outimg();

表單測試代碼如下

<?phpsession_start(); if(isset($_POST['dosubmit'])) {if(strtoupper($_SESSION['code']) == strtoupper($_POST['code']) ) {//驗證輸入的驗證碼echo "輸入成功!<br>";}else{echo "輸入不對!<br>";} } ?><body><form action="reg.php" method="post">username: <input type="text" name="username"> <br>password: <input type="password" name="password"> <br>code: <input type="text" onkeyup="if(this.value!=this.value.toUpperCase()) this.value=this.value.toUpperCase()" size="6" name="code"> <img src="code.php" onclick="this.src='code.php'" /> <br><!--1、將在輸入框中的字符,當keyup的時候自動將里面的字符轉換成大寫2、點擊圖片是會切換驗證碼 --><input type="submit" name="dosubmit" value="登 錄"> <br></form> </body>

?

轉載于:https://www.cnblogs.com/hxjbc/p/5188057.html

總結

以上是生活随笔為你收集整理的php验证码的制作的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。