這是後臺的代碼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>
Ai technology 前言 AppBuilder上線了低代碼製作組件功能,可以通過工作流的方式構建自定義組件,完成簡單Agent無法完成的複雜功能,使得生成的文本更加定製化,
本教程將指導您如何生成一個可運行的Google Web Toolkit (GWT) 2.1和Spring應用程序,該應用程序爲域模型實現了CRUD應用程序模式。在本教程中,您將學習如何: 安裝Google Eclipse插件 爲GWT配置
前端面試題 - Node JS與V8是什麼關係? V8 引擎是 Node.js 的核心組成部分,負責執行 JavaScript 代碼, 而 Node.js 爲 V8 提供了一個運行環境和API,使其能夠在服務器端運行。 通俗易懂的前端面試題
前端面試題 - V8是什麼? V8 是一個JavaScript引擎,能將JavaScript代碼直接編譯成本地平臺的機器碼並執行。 通俗易懂的前端面試題網站: https://www.front-interview.com
Codejock軟件公司的Xtreme Toolkit Pro是屢獲殊榮的VC界面庫,是MFC開發中最全面界面控件套包,它提供了Windows開發所需要的11種主流的Visual C++ MFC控件,包括Command Bars、Contr
本文介紹了 InnoDB 支持哪幾類表鎖,以及它們分別都用在什麼場景下,還介紹了其中兩類表鎖爲什麼要存在。 作者:操盛春,愛可生技術專家,公衆號『一樹一溪』作者,專注於研究 MySQL 和 OceanBase 源碼。 愛可生開源社區出品,
本文分享自華爲雲社區《手拉手入門springboot+kafka》,作者:QGS。 安裝kafka 啓動Kafka本地環境需Java 8+以上 Kafka是一種高吞吐量的分佈式發佈訂閱消息系統,它可以處理消費者在網站中的所有動作流數據。
作者:胡安祥 滿幫集團,作爲“互聯網+物流”的平臺型企業,一端承接託運人運貨需求,另一端對接貨車司機,提升貨運物流效率。2021 年美股上市,成爲數字貨運平臺上市第一股。根據公司年報,2021 年,超過 350 萬貨車司機在平臺上完成超 1
作者:Seata 社區 Part 1:歡迎大家報名 Apache Seata (incubating) 開源之夏 2024 課題 開源之夏 2024 學生報名期爲 4 月 30 日 - 6 月 3 日,歡迎報名 Apache Seata(i
圖片來源:國家航天局網站 近日,嫦娥六號任務還搭載了多個國際合作項目,包括法國的氡氣探測儀、歐空局(歐洲航天局(英文:European Space Agency),簡稱歐空局或ESA)的負離子探測儀、意大利的激光角反射鏡
轉載自tuoluzhe8521 導讀:通過簡化複雜的任務依賴關係, DolphinScheduler爲數據工程師提供了強大的工作流程管理和調度能力。在3.2.0版本中,DolphinScheduler帶來了一系列新功能和改進,使其在生產環
一、重構背景 1.1、退款 京東秒送秒送退款有2套結構,代碼邏輯混亂; 其中秒送、天選部分售後單是和平生pop交互退款,部分是和售後中臺交互退款;並且兼容3套邏輯; 痛點:代碼繁重,缺乏合理性的設計,後續迭代開發以及維護成本高,同時增加
自動裝配原理分析 條件註冊機制 spring-context模塊中有兩個組件:Condition接口和@Conditional註解,在@Conditional註解中可以指定一組Condition實現, 通常@Conditional是和@Co
終於要講解我們親愛的掘金了。掘金是一個非常不錯的平臺。所以很多朋友會把博客發佈到掘金上。 發佈到掘金要填寫的內容也比較多。今天給大家介紹一下如何用blog-auto-publishing-tools這個工具自動把博客發佈到掘金平臺上去。 前
文|趙真靈(花名:有濟) Koupleless 項目負責人螞蟻集團技術專家 本文 3724 字 閱讀 10 分鐘 聯繫作者/加入共建/使用產品 本篇文章屬於「Koupleless 進階系列文章」之一,默認讀者對 Koupleless