Tạo và sử dụng Captcha trong ASP.NET
Posted: 5/11/2011.
Bài viết này hướng dẫn bạn cách tự viết một ứng dụng Captcha trong ASP.NET với ngôn ngữ C# và sử dụng Captcha trong một webform.
Bài viết này hướng dẫn bạn cách tự viết một ứng dụng Captcha trong ASP.NET với ngôn ngữ C# và sử dụng Captcha trong một webform.
Đầu tiên bạn tại một trang Captcha có tên là Capcha.aspx với mã nguồn trang Capcha.aspx.cs như sau:
- using System;
- using System.Data;
- using System.Configuration;
- using System.Collections;
- using System.Web;
- using System.Web.Security;
- using System.Web.UI;
- using System.Web.UI.WebControls;
- using System.Web.UI.WebControls.WebParts;
- using System.Web.UI.HtmlControls;
- using System.Drawing;
- using System.Drawing.Drawing2D;
- using System.Drawing.Imaging;
- public partial class captcha_default : System.Web.UI.Page
- {
- protected void Page_Load(object sender, EventArgs e)
- {
- int ImageWidth = 123;
- int ImageHeight = 33;
- string[] chars = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "r", "s", "t", "v", "u", "x", "y", "z", "w", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9" };
- Random MyRand = new Random();
- string captcha = string.Empty;
- for (int i = 0; i < 6; i++)
- {
- captcha += chars[MyRand.Next(0, 56)];
- }
- Session["Captcha"] = captcha.ToString();
- string TextToCreate = Session["Captcha"].ToString();
- Brush newBrush = Brushes.Black;
- HatchBrush myBrush = new HatchBrush(HatchStyle.DottedDiamond, Color.Tomato, Color.YellowGreen);
- Pen myPen = new Pen(myBrush, 6);
- Font newFont = new Font("Century", 18, FontStyle.Regular);
- Bitmap newBitmap = new Bitmap(ImageWidth, ImageHeight);
- Graphics newGraphics = Graphics.FromImage(newBitmap);
- newGraphics.FillRectangle(myBrush, 0, 0, ImageWidth, ImageHeight);
- newGraphics.DrawString(TextToCreate, newFont, newBrush, 1, 1);
- newGraphics.SmoothingMode = SmoothingMode.HighQuality;
- newGraphics.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAliasGridFit;
- Response.ContentType = "image/jpeg";
- newBitmap.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);
- newGraphics.Dispose();
- newBitmap.Dispose();
- myPen.Dispose();
- newFont.Dispose();
- }
- }
Để sử dụng Captcha cho một webform, bạn sử dụng câu lệnh:
<img id="Img1" src="Captcha.aspx" alt="Captcha image" runat="server" />
Mã nguồn trang Default.aspx như sau:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Captcha Example</title>
</head>
<body>
<form id="form1" runat="server">
<img id="Img1" src="Captcha.aspx" alt="Captcha image" runat="server" />
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox><br /><br />
<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" /><br /><br />
<asp:Label ID="Label1" runat="server" Text="Label" ForeColor="Red"></asp:Label>
</form>
</body>
</html>
Tiếp theo viết sự kiện Button1_Click như sau:
- protected void Button1_Click(object sender, EventArgs e)
- {
- if(Session["Captcha"].ToString() == TextBox1.Text)
- {
- Label1.Text = "Captcha text to be entered correctly";
- }
- else
- {
- Label1.Text = "Please enter Captcha text correctly";
- TextBox1.Text="";
- }
- }
Và đây là kết quả:
[Nghean-Aptech]
Các tin mới:
Hướng dẫn tích hợp giao diện trang quản trị SB Admin 2 vào Laravel 5.8.
Hướng dẫn tích hợp Google ReCaptcha v2 vào Laravel bằng curl.
Học lập trình React JS trong vòng 5 phút.
Sử dụng trình soạn thảo CKeditor tích hợp CKFinder với Laravel.
Hướng dẫn cài đặt Apache, PHP, MySQL, PHPMyAdmin trên Windows 10 và cấu hình SendMail.
Các tin cũ hơn:
Tạo bộ đếm số người online với Servlet.
Kết nối CSDL MySQL bằng Visual C#.
Lập trình kết nối CSDL từ Java vào MySQL.
Tạo ứng dụng web JSP hỗ trợ đa ngữ.
Tối ưu việc nạp ảnh với Lazyload.