Ads 720 x 90

[VB.Net] Cách tạo mã Captcha trong Visual Studio

Xin chào các bạn, trong bài đăng này tôi sẽ thảo luận về cách tạo mã xác thực trong một biểu mẫu bằng Visual Studio 2010 (VB.Net).

Captcha là một thử nghiệm phản ứng thử thách được sử dụng trong điện toán để đảm bảo câu trả lời không được tạo ra bởi máy tính. Đầu tiên hãy mở Visual Studio và tạo một dự án mới, sau đó tạo một biểu mẫu với thiết kế như bên dưới


Các Thành Phàn Trong Mẫu :
  • PictureBox
  • TextBox
  • Button
  • Label

Sau đó, đi vào mã và nhập một số thư viện cần thiết:
Imports System.Text
Imports System.Drawing
Imports System.Windows.Forms
Imports System.Drawing.Drawing2D

Khi hoàn tất, khai báo một số biến toàn cục khi cần
Public Class Form1
Dim DrawingFont As New Font("Arial", 25)
Dim CaptchaImage As New Bitmap(140, 40)
Dim CaptchaGraf As Graphics = Graphics.FromImage(CaptchaImage)
Dim Alphabet As String = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"
Dim CaptchaString, TickRandom As String
Dim ProcessNumber As Integer
End Class

Sau đó, tạo một hàm cho quá trình tạo mã captcha
Private Sub GenerateCaptcha()
ProcessNumber = My.Computer.Clock.LocalTime.Millisecond
If ProcessNumber < 521 Then
ProcessNumber = ProcessNumber \ 10
CaptchaString = Alphabet.Substring(ProcessNumber, 1)
Else
CaptchaString = CStr(My.Computer.Clock.LocalTime.Second \ 6)
End If
ProcessNumber = My.Computer.Clock.LocalTime.Second
If ProcessNumber < 30 Then
ProcessNumber = Math.Abs(ProcessNumber - 8)
CaptchaString += Alphabet.Substring(ProcessNumber, 1)
Else
CaptchaString += CStr(My.Computer.Clock.LocalTime.Minute \ 6)
End If
ProcessNumber = My.Computer.Clock.LocalTime.DayOfYear
If ProcessNumber Mod 2 = 0 Then
ProcessNumber = ProcessNumber \ 8
CaptchaString += Alphabet.Substring(ProcessNumber, 1)
Else
CaptchaString += CStr(ProcessNumber \ 37)
End If
TickRandom = My.Computer.Clock.TickCount.ToString
ProcessNumber = Val(TickRandom.Substring(TickRandom.Length - 1, 1))
If ProcessNumber Mod 2 = 0 Then
CaptchaString += CStr(ProcessNumber)
Else
ProcessNumber = Math.Abs(Int(Math.Cos(Val(TickRandom)) * 51))
CaptchaString += Alphabet.Substring(ProcessNumber, 1)
End If
ProcessNumber = My.Computer.Clock.LocalTime.Hour
If ProcessNumber Mod 2 = 0 Then
ProcessNumber = Math.Abs(Int(Math.Sin(Val(My.Computer.Clock.LocalTime.Year)) * 51))
CaptchaString += Alphabet.Substring(ProcessNumber, 1)
Else
CaptchaString += CStr(ProcessNumber \ 3)
End If
ProcessNumber = My.Computer.Clock.LocalTime.Millisecond
If ProcessNumber > 521 Then
ProcessNumber = Math.Abs((ProcessNumber \ 10) - 52)
CaptchaString += Alphabet.Substring(ProcessNumber, 1)
Else
CaptchaString += CStr(My.Computer.Clock.LocalTime.Second \ 6)
End If
CaptchaGraf.Clear(Color.White)

For hasher As Integer = 0 To 5
CaptchaGraf.DrawString(CaptchaString.Substring(hasher, 1), DrawingFont, Brushes.Black, hasher * 20 + hasher + ProcessNumber \ 200, (hasher Mod 3) * (ProcessNumber \ 200))
Next
PictureBox1.Image = CaptchaImage
End Sub

Sau đó, bấm đúp vào Nút 1 để xác định văn bản được nhập trong TextBox bằng với hình ảnh xác thực sẽ xuất hiện trong PictureBox
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click  
If TextBox1.Text = CaptchaString Then
MsgBox("Captcha Correct", MsgBoxStyle.Information)
TextBox1.Clear()
GenerateCaptcha()
Else
MsgBox("Captcha Incorrect", MsgBoxStyle.Exclamation)
TextBox1.Clear()
End If
End Sub

Và cuối cùng, gọi hàm bạn đã tạo vào Form_Load và bấm vào button_2
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click   
GenerateCaptcha()
End Sub

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
GenerateCaptcha()
End Sub

Khi hoàn thành và không có lỗi, chương trình đã sẵn sàng để chạy.

Sẽ cập nhật demo sớm cho mọi người :)







source http://www.hungcoder.com/2019/06/vb-net-cach-tao-ma-captcha-trong-visual-studio.html

Related Posts

Post a Comment

Subscribe Our Newsletter