您好,登錄后才能下訂單哦!
這篇文章主要介紹怎么使用php實現驗證碼,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
php實現驗證碼的方法:首先創建繪制驗證碼類,代碼如“class Captcha {...}”;然后繪制圖片頁面;接著設置表單頁面;最后創建好驗證頁面即可。
本文操作環境:Windows7系統、PHP7.1版,DELL G3電腦
PHP 實現驗證碼
繪制驗證碼類
<?php class Captcha { const CODE_LENGTH = 4; // 驗證碼長度固定為 4,可以根據實際需要修改 const LINE_COUNT = 4; // 干擾線個數 const DOT_COUNT = 200; // 干擾點個數 // 驗證碼備選字符 static $CANDIDATES = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; public function __construct($width, $height) { $this->width = $width; $this->height = $height; // 創建圖像對象 $this->image = imagecreatetruecolor($width, $height); // 創建驗證碼 $this->generateCaptchaCode(); } public function __destruct() { // 銷毀圖像對象 imagedestroy($this->image); } public function paint() { // 繪制背景 $this->paintBackground(); // 繪制驗證碼 $this->paintText(); // 繪制干擾 $this->paintDirty(); } public function output() { // 設置頭部為PNG圖片 header('Content-Type: image/png'); // 輸出到瀏覽器 imagepng($this->image); } public function code() { return $this->code; } private function paintBackground() { // 背景顏色設置為白色 $color = imagecolorallocate($this->image, 255, 255, 255); // 填充背景 imagefill($this->image, 0, 0, $color); } private function paintText() { // 遍歷驗證碼,一個字符一個字符地繪制 for ($i = 0; $i < strlen($this->code); ++$i) { $fontsize = 6; $color = imagecolorallocate($this->image, rand(0,50), rand(0,50), rand(0,50)); $x = ($i * 100 / self::CODE_LENGTH) + rand(5, 10); $y = rand(5, 10); imagestring($this->image, $fontsize, $x, $y, $this->code[$i], $color); } } private function paintDirty() { // 繪制點 for ($i = 0; $i < self::DOT_COUNT; ++$i) { // 點的顏色 $pointcolor = imagecolorallocate($this->image, rand(100,200), rand(100,200), rand(100,200)); // 畫點 imagesetpixel($this->image, rand(1,99), rand(1,29), $pointcolor); } // 繪制線條 for ($i = 0; $i < self::LINE_COUNT; $i++) { // 線的顏色 $linecolor = imagecolorallocate($this->image, rand(100,200), rand(100,200), rand(100,200)); // 畫線 imageline($this->image, rand(1,$this->width-1), rand(1,29), rand(1,99), rand(1,29), $linecolor); } } private function generateCaptchaCode() { // 從備選字符串中隨機選取字符 for ($i = 0; $i < self::CODE_LENGTH; ++$i) { $len = strlen(self::$CANDIDATES); $pos = rand(0, $len - 1); $ch = self::$CANDIDATES[$pos]; $this->code .= $ch; } } private $image = NULL; // 圖像對象 private $code = ""; // 驗證碼 private $width = 0; // 圖像長度 private $height = 0; // 圖像寬度 } ?>
繪制圖片頁面
<?php session_start(); // 開啟 Session,必須是第一句 require_once "./Captcha.php"; $captcha = new Captcha(100, 30); // 創建對象 $_SESSION['captcha'] = $captcha->code(); // 將驗證碼存入Session $captcha->paint(); // 繪制 $captcha->output(); // 輸出 ?>
》
表單頁面
<?php session_start(); // 開啟Session,必須是第一句 ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>提交頁面</title> <script> function validate_form(form) { with (form) { if (captcha.value == null || captcha.value == "") { alert("驗證碼不能為空!"); return false; } } return true; } </script> </head> <body> <form method="post" action="./validate.php" onsubmit="return validate_form(this)"> 驗證碼:<input type="text" name="captcha" value="" size=10> <img title="點擊刷新" id="captchaImg" border="1" src="./captchaImage.php" onclick="this.src='./captchaImage.php?r=' + Math.random();"></img><br> <input type="submit"/> </form> </body> </html>
驗證頁面
<?php session_start(); // 開啟Session,必須是第一句 ?> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>驗證頁面</title> </head> <body> <?php if (isset($_POST['captcha']) && strcasecmp($_POST['captcha'], $_SESSION['captcha']) == 0) { echo "Succeeded!"; } else { ec` o "Failed!"; } ?> </body> </html>
以上是“怎么使用php實現驗證碼”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。