Tạo Captcha trong ASP.NET
Captcha là một chuỗi kí tự đã bị làm biến dạng hoặc khó để đọc đi. Captcha thường được sử dụng để chống spam trên web. Có rất nhiều cách để đưa captcha vào web. Hôm nay mình sẽ hướng dẫn các bạn cách để tạo một captcha trong asp.net.
Bước 1: Tạo giao diện captcha
Bước 2: Tạo phương thức sinh captcha.
Bước 3: Gọi phương thức sinh captcha.
Các bạn có thể download source tại đây nha.
Các bạn có thể tham khảo thêm cách sử dụng recaptcha tại đây
Bước 1: Tạo giao diện captcha
<div>
<asp:Image ID="imgCaptcha" runat="server"/>
<asp:ImageButton ID="imbReLoad" runat="server" ImageUrl="~/Images/tao captcha asp.net.jpg" OnClick="imbReLoad_Click" /><br />
<asp:TextBox runat="server" ID="txtCaptcha" /> <br />
<asp:Button runat="server" ID="btnSubmit" Text="Đồng ý" OnClick="btnSubmit_Click" /> <br />
<asp:Label ID="lblMessage" runat="server" ForeColor="Red"></asp:Label>
</div>
Bước 2: Tạo phương thức sinh captcha.
private void CreateCaptcha()Cách thức để tạo mình đã giải thích khá rõ trên code rồi.
{
// font cho captcha
string[] fonts ={ "Arial Black", "Lucida Sans Unicode", "Time New Roman" };
// số lượng kí tự của captcha
const byte LENGTH = 6;
// chuỗi để lấy các kí tự sẽ sử dụng cho captcha
const string chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijk lmnopqrstuvwxyz";
// tạo ảnh bitmap.
using (Bitmap bmp = new Bitmap(120, 30))
{
using (Graphics g = Graphics.FromImage(bmp))
{
// Tạo nền cho ảnh dạng nhiều dấu chấm
HatchBrush brush = new HatchBrush(HatchStyle.DottedDiamond, Color.Green,Color.GreenYellow);
g.FillRegion(brush,g.Clip);
// Lưu chuỗi captcha trong quá trình tạo
StringBuilder strCaptcha = new StringBuilder();
Random rand = new Random();
for (int i = 0; i < LENGTH; i++)
{
// Lấy kí tự ngẫu nhiên từ mảng chars
string str = chars[rand.Next(chars.Length)].ToString();
strCaptcha.Append(str);
// Tạo font với tên font ngẫu nhiên chọn từ mảng fonts
Font font = new Font(fonts[rand.Next(fonts.Length)], 14, FontStyle.Strikeout | FontStyle.Italic);
// Lấy kích thước của kí tự
SizeF size= g.MeasureString(str,font);
// Vẽ kí tự đó ra ảnh tại vị trí tăng dần theo i, vị trí top ngẫu nhiên
g.DrawString(str, font,
Brushes.Chocolate,i*size.Width+3, rand.Next(2,10));
font.Dispose();
}
// Lưu captcha vào session
Session["captcha"]=strCaptcha.ToString();
// Lưu ảnh vào thư mục captcha với tên ảnh dựa theo IP
string path = "Captcha/" + Request.UserHostAddress + ".gif";
bmp.Save(Server.MapPath("") + "/" + path, ImageFormat.Gif);
imgCaptcha.ImageUrl = path;
}
}
Bước 3: Gọi phương thức sinh captcha.
protected void Page_Load(object sender, EventArgs e)Và đây là kết quả:
{
if (!IsPostBack)
CreateCaptcha();
}
protected void imbReLoad_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
CreateCaptcha();
lblMessage.Text = "";
}
protected void btnSubmit_Click(object sender, EventArgs e)
{
if (txtCaptcha.Text.Equals(Session["captcha"].ToString(), StringComparison.OrdinalIgnoreCase))
lblMessage.Text = "Captcha chính xác";
else
lblMessage.Text = "Captcha chưa chính xác. Vui lòng nhập lại!";
}
Các bạn có thể download source tại đây nha.
Các bạn có thể tham khảo thêm cách sử dụng recaptcha tại đây
1 nhận xét:
The given path's format is not supported.
bạn cho mình hỏi mình sử dụng visualstudio 12 thi bi lỗi nay..
Đăng nhận xét