这是后台的代码VerifyCode.ashx.cs
/// <summary> /// 验证码 /// </summary> public class VerifyCode : IHttpHandler, IRequiresSessionState { public static bool Validate(string code) { return string.Compare(code, Code.Replace(" ",""), true) == 0; } static string Code { get { var obj = HttpContext.Current.Session["verifyCode"]; if (obj == null) return string.Empty; return obj.ToString(); } set { HttpContext.Current.Session["verifyCode"] = value; } } public void ProcessRequest(HttpContext context) { char[] source = ("ABCDEFGHIJKLMNPQRSTUVWXYZ123456789").ToCharArray(); Random random = new Random(); string text = ""; for (int i = 0; i < 4; i++)//4 { text += source[random.Next(0, source.Length)] + " "; } text = text.Trim(); Code = text; //save in server for authenticate Bitmap CodePic = new Bitmap(65, 20); Graphics oGraphics = Graphics.FromImage(CodePic); SolidBrush oBrushForBack = new SolidBrush(Color.WhiteSmoke); oGraphics.FillRectangle(oBrushForBack, 0, 0, CodePic.Width, CodePic.Height);//将位图刷色 oBrushForBack.Dispose(); //画背景线 for (int i = 0; i < 60; i++) { int x1 = random.Next(60); int x2 = random.Next(60); int y1 = random.Next(20); int y2 = random.Next(20); float f=float.Parse(random.Next(4).ToString()); oGraphics.DrawLine(new Pen(Color.FromArgb(random.Next()),f), x1, y1, x2, y2); } FontStyle eFontStyle = FontStyle.Bold;//字体样式 int iFontSize = 11; string sColor = "Blue"; StringAlignment eAlign = StringAlignment.Center; Rectangle oRect = new Rectangle(2, 0, CodePic.Width, CodePic.Height); Font oFont = new Font("Arial", iFontSize, eFontStyle); StringFormat oFormat = new StringFormat();//字符串格式 oFormat.Alignment = eAlign;//设置字符串格式 oFormat.LineAlignment = StringAlignment.Center;//设置字符串格式 SolidBrush oBrush = new SolidBrush(Color.FromName(sColor)); oGraphics.DrawString(text, oFont, oBrush, oRect, oFormat); oBrush.Dispose(); //画图片的前景噪音点 for (int i = 0; i < 60; i++) { int x = random.Next(60); int y = random.Next(20); CodePic.SetPixel(x, y, Color.FromArgb(random.Next())); } HttpContext.Current.Response.ContentType = "image/gif"; HttpContext.Current.Response.ClearContent(); CodePic.Save(HttpContext.Current.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Gif); oGraphics.Dispose(); CodePic.Dispose(); }
其他页面调用验证码如下:
<li class="verify"> <asp:Image ID="imgVerifyCode" runat="server" ImageUrl="/VerifyCode.ashx" align="absmiddle" /> <a href="#" mce_href="#" οnclick="return reloadImg('imgVerifyCode');"> <img src="../Images/hip_reload.gif" mce_src="Images/hip_reload.gif" border="0" align="middle"></a> </li> <mce:script type="text/javascript" language="javascript"><!-- function reloadImg(id) { var obj = $("#<%=imgVerifyCode.ClientID%>"); var src = obj.attr("src"); var pos = src.indexOf('?'); if (pos >= 0) { src = src.substr(0, pos); } var date = new Date(); obj.attr("src", src + '?v=' + date.getTime()); //obj.src = return false; } // --></mce:script>
本文分享自華爲雲社區《10分鐘搞懂各種內存溢出案例!!(含完整源碼,建議收藏)》,作者:冰 河。 作爲程序員,多多少少都會遇到一些內存溢出的場景,如果你還沒遇到,說明你工作的年限可能比較短,或者你根本就是個假程序員!哈哈,開個玩笑。今天,我
· 前言 · 在國內,公網服務器與本地服務器的通信一直是個難題,本地服務器因爲IP是動態變化的,公網服務器沒辦法將請求發送給本地服務器。爲了解決這個問題,所以採用WebSocket協議替換Http協議。爲了實現請求等待,使用Gu
在當今數字化時代,社交媒體已成爲人們獲取信息、分享生活和進行商業推廣的重要平臺。隨着社交媒體內容的爆炸性增長,自動化抓取社交媒體上的媒體資源變得尤爲重要。本文將介紹如何使用Puppeteer這一強大的自動化工具來實現這一目標。 1. P
DHTMLX Diagram庫允許用幾行代碼構建JavaScript流程圖,通過自動佈局和實時編輯器,它可以更容易地將複雜數據可視化到一個整潔的層次結構中。 DHTMLX Diagram v6.0版本發佈,帶來了衆多令人興奮的新功能和改進,
引言 在當今數字化時代,網絡數據採集已成爲獲取信息的重要手段之一。Symfony Panther,作爲Symfony生態系統中的一個強大工具,爲開發者提供了一種簡單、高效的方式來模擬瀏覽器行爲,實現網絡數據的採集和自動化操作。本文將通過
DevExtreme擁有高性能的HTML5 / JavaScript小部件集合,使您可以利用現代Web開發堆棧(包括React,Angular,ASP.NET Core,jQuery,Knockout等)構建交互式的Web應用程序。從Ang
DevExtreme擁有高性能的HTML5 / JavaScript小部件集合*使您可以利用現代Web開發堆棧*包括React*Angular*ASP.NET Core*jQuery*Knockout等*構建交互式的Web應用程序。從Ang
[toc] 簡介 Redis 是一個單線程的數據服務,高性能,速度快,使用C語言實現,它的內部使用了一個 eventLoop 事件循環器來實現客戶端與服務端的通信。下面我們就來分析下Redis7.2的啓動程序源碼。 1、server.c m
轉載自牛肉胡辣湯 在大數據分析和處理的領域中,DolphinScheduler是一個開源的分佈式工作流調度系統,可以用於調度和管理複雜的工作流任務。本文將介紹如何使用Java中的URL類來調用DolphinScheduler的API,實現啓
本文主要講述ClickHouse中的數據存儲結構,包括文件組織結構和索引結構,以及建立在其基礎上的數據過濾機制,從Part裁剪到Mark裁剪,最後到基於SIMD的行過濾機制。 數據過濾機制實質上是構建在數據存儲格式之上的算法,所以在介紹過濾
文|苟振東(花名:盛知) Koupleless 項目 committer 螞蟻集團技術專家 本文 5789 字 閱讀 12 分鐘 本篇文章屬於 Koupleless 進階系列文章第二篇,默認讀者對 Koupleless 的基礎概念、能力都
1. 引言 在現代軟件開發過程中,性能優化和故障排查是保證應用穩定運行的關鍵任務之一。Java作爲一種廣泛使用的編程語言,其生態中湧現出了許多優秀的監控和診斷工具,諸如:SkyWalking、Zipkin等,它們幫助開發者和運維人員