記得前幾天剛學習了怎么樣寫一個驗證碼,但是只是創建了一個驗證碼並沒有把它使用在登錄或者注冊頁面中,嘿嘿,所以一直都在想着這個問題,想盡快的解決下,而就是今天下午意外一些事情沒有課,就把這個重新的總結一下,似乎好多友友說驗證碼百度上面搜索好多可以拿來使用的,但是我現在是一個學習的狀態,應該以一種學習的態度好好總結一下它,下面就總結一下我理解上的驗證碼的使用。
驗證碼的創建以及使用
public class ValicateCode : IHttpHandler, IRequiresSessionState{ public void ProcessRequest (HttpContext context) { context.Response.ContentType = "Image/jpeg"; string Codefont = Code(); //調用創建的Code方法 context.Session["txtcode"] = Codefont; //創建一個session,它是以一個鍵值對的形式存在,在這里取名字為txtcode,值為Codefont using (Bitmap img = new Bitmap(120, 30)) //首先創建一個背景 { using (Graphics g = Graphics.FromImage(img)) //使用工具類Graphics創建一個對象 { g.FillRectangle(Brushes.White, 0, 0, img.Width, img.Height); //填充一個矩形,顏色為白色,位置為0,0,寬和高都為創建的圖片的寬和高 g.DrawRectangle(Pens.Red, 0, 0, img.Width - 2, img.Height - 2); g.DrawString(Codefont, new Font("宋體", 20), Brushes.Red, 0, 0); img.Save(context.Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg); } } } public string Code() { string num = string.Empty; Random r = new Random(); //使用隨機數,隨機生成一組數據 string[] array = { "1", "2", "3", "木", "頭", "人", "浪", "漫", "窩" }; for (int i = 0; i < 4; i++) //在這里記得使用的是i<驗證碼顯示項的長度-1,由於使用的是索引 { num += array[r.Next(array.Length)]; //執行的是數組的長度,然后連接,在這里是字符串類型的可以使用++ } return num; //返回隨意生成的幾個項連接然后返回 } }
上面是使用一個隨機數和我們之前學習的畫圖工具畫出來的一個驗證碼,具體的其他的驗證碼是怎么樣制作的我目前還是不太清楚的,但是這樣制作的還是可以實現其驗證的作用的,還有就是使用時間需要引用一個命名空間using System.Web.SessionState,實現一個接口IRequiresSessionState,這個是很有必要的事情,一定要記得的啦。
下面就來寫一下在一個登錄頁面上面想要使用驗證碼實現的功能:
<% if(errormess==3) { %> <tr id="tcode" runat="server"> <td> <input type="text" id="txtcode" name="txtcode" value="請輸入驗證碼" runat="server"/> </td> <td> <img src="ValicateCode.ashx" alt="驗證碼" /> </td> </tr> <% } %>
$(function () { $("#txtcode").focus(function () { if ($(this).val() == "請輸入驗證碼") { $(this).val(''); $() } }).blur(function () { if ($(this).val() == '') { $(this).val('請輸入驗證碼'); } }) }) $(function () { if ($("txtname").attr("name") == 3) { $(this).show(); } })
protected int errormess = 0; errormess = Convert.ToInt32(ViewState["error"]); //在這里使用ViewState獲取ViewState的值 if (errormess < 3) { errormess++; ViewState["error"] = errormess; }
我們輸入錯誤三次即出現驗證碼,想一下剛開始時間應該是掩藏的吧,嘿嘿,當你登陸三次依舊是登錄失敗那么就會出現提示您輸入驗證碼,當然輸入的驗證碼需要在前台頁面直接判斷是否正確即可,如果不爭取直接提示錯誤,否則在提交服務器判斷用戶名或者密碼的問題。
好啦,嘿嘿,本來還要和三級連動一起總結的,發現已經總結不完啦,就寫總結到這里吧,加油加油,我會繼續努力的。