Thứ tư, ngày 7 tháng 12 năm 2016

Tạo mã an toàn ( Captcha Image ) cho website

Ngày đăng: 22/1/2011, 9:41:11PM | Lượt xem: 20,127
Hot!

Nhằm ngăn chặn việc submit data liên tục về Web Server chúng ta sẽ ra một vài chữ trên 1 tấm hình và buộc người dùng phải đọc những chữ đó và nhập lại

việc này máy sẽ làm chưa được nếu chữ trên hình càng ngoằn ngèo. Mình sẽ hướng dẫn các bạn 1 cách tạo ra tấm hình đó với c# và asp.net.
 

 

Sử dụng thư viện Drawing trong c#

Chúng ta cần sử dụng thư viện Drawing trong c# để làm chuyện này.

using System.Drawing;
using System.Drawing.Drawing2D;

 

Tạo mới 1 tấm hình rất đơn giản

Đoạn code dưới đây giúp bạn tạo ra một tấm hình bitmap và dùng đối tượng Graphics để vẽ mọi thứ có thể như chữ, đường thẳng, hình chữ nhật, ... lên tấm hình bitmap.

Bitmap bmp = new Bitmap(_width, _height);
Graphics g = Graphics.FromImage(bmp);

Tạo background cho hình - tăng độ khó nhận dạng cho máy

Giúp chúng ta có một background với 2 màu trộn lẫn.

// Fill in the background.        
Rectangle rect = new Rectangle(0, 0, _width, _height);
HatchBrush hatchBrush = new HatchBrush(HatchStyle.SmallConfetti, 
Color.Black, Color.Gray);
g.FillRectangle(hatchBrush, rect);

Tạo chữ ngẩu nhiên với đối tượng Ramdom

Giúp tăng tính đa dạng của chữ thể hiện.

// Get random text
string text = "qwertyuiopasdfghjklzxcvbnm";
string s = "";
for (int i = 0; i < 7; i++) {
    s += text[rnd.Next(0, text.Length - 1)];
}
// Draw text on the Image
Font f = new Font("Bradley Hand ITC", 20, FontStyle.Bold);
Point p = new Point(1, -3);
g.DrawString(s, f, Brushes.Black, p);

Cách sử dụng

Xem đoạn code ứng dụng tấm hình này vào trang web.

protected void Page_Load(object sender, EventArgs e)
{
    Response.Clear();
    Response.ContentType = "image/jpeg";
    string text;
    CaptchaImage.GenericImage(out text,120,30).Save(Response.OutputStream, 
                             System.Drawing.Imaging.ImageFormat.Jpeg);
}

Bạn tải source code ví dụ bên trên về xem thêm, hy vọng bài viết này sẽ giúp ích cho anh em lập trình web. Chúc vui vẽ.

 Chia sẻ qua: 
Hot!
Ý kiến bạn đọc

These items will be permanently deleted and cannot be recovered. Are you sure?

Gallery

image

Maecenas viverra rutrum pulvinar

Maecenas viverra rutrum pulvinar! Aenean vehicula nulla sit amet metus aliquam et malesuada risus aliquet. Vestibulum rhoncus, dolor sit amet venenatis porta, metus purus sagittis nisl, sodales volutpat elit lorem…

Read more

Text Links

Thiết kế logo chuyên nghiệp Insky
DAFABET
W88 w88b.com/dang-ky-tai-khoan-w88
W88
Copyright © 2011 - 2012 vietshare.vn by phamkhuong102@gmail.com doanhkisi2315@gmail.com. All rights reserved.