圖片驗證碼生成以及前端驗證
第一種是session 驗證方式
<?php session_start(); //開啟session記錄驗證碼資料 vCode(4, 15);//設定驗證碼的字元個數和圖片基礎寬度 //vCode 字元數目,字型大小,圖片寬度、高度 function vCode($num = 4, $size = 20, $width = 0, $height = 0) { !$width && $width = $num * $size * 4 / 5 + 15; !$height && $height = $size + 10; //設定驗證碼字元集合 $str = "23456789abcdefghijkmnpqrstuvwxyzABCDEFGHIJKLMNPQRSTUVW"; //儲存獲取的驗證碼 $code = ''; //隨機選取字元 for ($i = 0; $i < $num; $i++) { $code .= $str[mt_rand(0, strlen($str)-1)]; } //建立驗證碼畫布 $im = imagecreatetruecolor($width, $height); //背景色 $back_color = imagecolorallocate($im, mt_rand(0,100),mt_rand(0,100), mt_rand(0,100)); //文字色 $text_color = imagecolorallocate($im, mt_rand(100, 255), mt_rand(100, 255), mt_rand(100, 255)); imagefilledrectangle($im, 0, 0, $width, $height, $back_color); // 畫干擾線 for($i = 0;$i < 5;$i++) { $font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); imagearc($im, mt_rand(- $width, $width), mt_rand(- $height, $height), mt_rand(30, $width * 2), mt_rand(20, $height * 2), mt_rand(0, 360), mt_rand(0, 360), $font_color); } // 畫干擾點 for($i = 0;$i < 50;$i++) { $font_color = imagecolorallocate($im, mt_rand(0, 255), mt_rand(0, 255), mt_rand(0, 255)); imagesetpixel($im, mt_rand(0, $width), mt_rand(0, $height), $font_color); } //隨機旋轉角度陣列 $array=array(5,4,3,2,1,0,-1,-2,-3,-4,-5); // 輸出驗證碼 // imagefttext(image, size, angle, x, y, color, fontfile, text) @imagefttext($im, $size , array_rand($array), 12, $size + 6, $text_color, 'c:\WINDOWS\Fonts\simsun.ttc', $code); $_SESSION["VerifyCode"]=$code; //no-cache在每次請求時都會訪問伺服器 //max-age在請求1s後再次請求會再次訪問伺服器,must-revalidate則第一發送請求會訪問伺服器,之後不會再訪問伺服器 // header("Cache-Control: max-age=1, s-maxage=1, no-cache, must-revalidate"); header("Cache-Control: no-cache"); header("Content-type: image/png;charset=gb2312"); //將圖片轉化為png格式 imagepng($im); imagedestroy($im); } ?>
第二種是cookie驗證
<?php //session_start(); header("Content-type: image/png");//生成驗證碼圖片 // 全數字 $str = "2,3,4,5,6,7,8,a,b,c,d,e,f,h,i,j,k,m,n,p,q,r,s,t,u,v,w,x,y,z,A,B,C,D,E,F,G,H,J,K,L,M,N,P,Q,R,T,U,V,W,X,Y"; //要顯示的字元,可自己進行增刪 $list = explode(",", $str); $cmax = count($list) - 1; $verifyCode = ''; for ( $i=0; $i < 4; $i++ ){ $randnum = mt_rand(0, $cmax); $verifyCode .= $list[$randnum]; //取出字元,組合成為我們要的驗證碼字元 } $im = imagecreate(58,28); //生成圖片 $black = imagecolorallocate($im, 0,0,0); //此條及以下三條為設定的顏色 $white = imagecolorallocate($im, 255,255,255); $gray = imagecolorallocate($im, 200,200,200); $red = imagecolorallocate($im, 255, 0, 0); imagefill($im,0,0,$white); //給圖片填充顏色 //將驗證碼繪入圖片 imagestring($im, 5, 10 , 8, $verifyCode, $black); //將驗證碼寫入到圖片中 setCookie("code", $verifyCode, time() + 3600, "/"); //$_SESSION['code']=$verifyCode; //$_SESSION['code'] = $verifyCode; //將字元放入SESSION中 for($i=0;$i<50;$i++) //加入干擾象素 { imagesetpixel($im, rand(0,100) , rand(0,100) , $black); //加入點狀干擾素 imagesetpixel($im, rand(0,100) , rand(0,100) , $red); imagesetpixel($im, rand(0,100) , rand(0,100) , $gray); imagearc($im, rand(0,200), rand(0,200), '5', '10', '75', '170', rand(0,300)); //加入弧線狀干擾素 //imageline($im, rand(0,200), rand(0,200), rand(0,200), rand(0,200), $red); //加入線條狀干擾素 } imagepng($im); imagedestroy($im);
分別驗證
session驗證方式 在驗證前端頁面php 在生成圖片驗證碼端
//頁面提交資料 $varye 開啟session_start();
session_start();
$_SESSION["VerifyCode"]=$code;
strtolower($code)==strtolower($varye);
cookie 驗證方式 注意時間限制
//設定cookie值 setCookie("code", $verifyCode, time() + 3600, "/"); //接收到生成的驗證碼 和頁面提交的驗證碼作對比 //$params['code']頁面提交資料 $user_code=$params['code']; //$_COOKIE["code"]取出cookie中驗證碼 統一字元大小格式 if(strtolower($user_code)==strtolower($_COOKIE["code"])){ echo "驗證成功!"; }
strtolower 返回轉換為小寫的字串。
相關推薦
圖片驗證碼生成以及前端驗證
第一種是session 驗證方式 <?php session_start(); //開啟session記錄驗證碼資料 vCode(4, 15);//設定驗證碼的字元個數和圖片基礎寬度 //vCode 字元數目,字型大小,圖片寬度、高度 functio
PHP GD 生成圖片驗證碼+session獲取儲存驗證碼
mark ast rac alloc orm ext random col nbsp 以下分享一個PHP制作的圖片驗證碼案例:案比例如以下圖: 運用PHP GD具體請看:http://www.php.net/manual/zh/book.im
用Canvas生成隨機驗證碼(後端前端都可以)
ntb inf pre text contex back data listen nload 一 、使用前端生成驗證碼 <!DOCTYPE html> <html> <head> <meta charse
Flask實戰第40天:圖片驗證碼生成技術
all see pillow 字體大小 src print new line 訪問 安裝pillow pip install pillow 在utils下新建python package命名為captcha 把需要需要用到的字體放在captcha下 編輯
Node.js圖片驗證碼生成svg-captcha
var option = { size: 6, // 驗證碼長度 ignoreChars: '0o1ilI', // 驗證碼字元中排除 0o1i noise: 2, // 干擾線條的數量 color: true, // 驗證碼的字元是否有顏色,預設沒有,如果設
Java的驗證碼生成工具類程式碼以及控制器程式碼
import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt.RenderingHints; import jav
[轉]php 圖片驗證碼生成 前後臺驗證
本文轉自:https://www.cnblogs.com/xiaoyezi/p/3541195.html 自己從前一段時間做了個php小專案,關於生成圖片驗證碼生成和後臺的驗證,把自己用到的東西總結一下,希望大家在用到相關問題的時候可以有一定的參考性。 首先,php驗證碼生成。 程式碼如下: 1.生成
Java生成圖片驗證碼(有點仿QQ驗證碼的意思)
看了挺多圖片驗證碼的程式碼,感覺沒什麼長的好看點的,就自己動手寫了個,寫完發現跟QQ的有幾分相似,比較滿意。 功能包括:自定義圖片尺寸和字元長度,隨機背景顏色和字元顏色,隨機字元偏移角度,字元平滑邊緣,干擾線,噪點,背景扭曲。 本來想做字元扭曲的,不知道怎的先生成文字再扭曲
Web---圖片驗證碼生成教程詳解-從簡單到複雜-從本地到前後臺
首先,我們先來看本地如何生成圖片驗證碼的,再來寫輸出到網頁的驗證碼如何實現。 先來看最簡單的—實現的功能是,將一個字串變成圖片寫入到檔案中 實現程式碼: package cn.hncu.img; import java.awt.Graphics;
學習筆記-圖片驗證碼生成
/** * 圖片驗證碼 * @param request * @param response */ @RequestMapping("/verifyImage") public void verifyImage(HttpServletRequest re
驗證碼生成和驗證
+= pan onclick eat insert round tty ntb 驗證碼生成 js /**從b * */ var code ; //在全局定義驗證碼 //產生驗證碼 window.onload = function createCode(){
驗證碼生成工具
ray 位置 next create web hist awt public let CaptchaUnit.javapackage com.jason.www.common;import java.awt.*;import java.awt.image.BufferedI
java圖形驗證碼生成工具類及web頁面校驗驗證碼
組合 line des resp word buffere 需要 case ali 最近做驗證碼,參考網上案例,發現有不少問題,特意進行了修改和完善。驗證碼生成器:[ht
強大的驗證碼生成模塊
繁體字 new ase import ini lse 圖片 codes ID # 首先要安裝PIL庫 pip3 install pillow from PIL import Image, ImageDraw, ImageFont, ImageFilter import
登陸頁面的驗證碼生成與驗證
數字 name ron als ntc per null 註冊 errorlog 登陸頁面的驗證碼生成與驗證 特點:基於strurs2框架 減少對數據庫的訪問次數 避免無效的訪問 提高服務器的性能 1 登陸界面:基於struts2框架 <s:src actio
JS驗證碼生成(入門級別)
mage default etc 更換 默認 function asc col lineto 練手項目:JavaScript驗證碼 1 <!DOCTYPE html> 2 <html> 3 4 <head> 5
Django框架之驗證碼生成示例
console 函數 with sta fse == urn str ucc 一、生成隨機顏色的圖片 1)前端代碼展示 <!DOCTYPE html> <html lang="en"> <head> <meta char
四則運算實驗 驗證碼生成實驗
imu 填充 宋體 util image() 小孩 label create mage 程序設計要求: 編寫一個程序,寫一個能自動生成30道小學四則運算題目的 “軟件”。 實驗要求: 1) 按照題目內容要求編寫程序實現功能。 2) 實驗報告中要求包括程序設計思想、程
WEB——驗證碼生成、IO儲存、二進位制傳輸
執行下段程式,瀏覽器訪問127.0.0.1:8000 即可在頁面展現驗證碼 程式碼包含了驗證碼的生成 io儲存 二進位制資料傳輸等知識點 # coding=utf-8 # wsgi_server.py import random import string import base64
SpringCloud工作筆記063---Java 手機驗證碼生成_儲存到redis
JAVA技術交流QQ群:170933152 List: 1.需求 2.實現 3.總結 ……1.需求…… 使用者提交訂單申請,需要輸入手機號,驗證二維碼。然後再判斷使用者輸入的手機號是否正確,正確則生成訂單資訊入庫