how to create dynamic captch code, any website, any registration form etc Prevent Bot Attacks any website form
Default.aspx
<%@
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></title>
</head>
<body>
<form
id="form1"
runat="server">
<div>
<asp:Label ID="lblmsg" runat="server" Font-Bold="True"
ForeColor="Red"
Text=""></asp:Label>
<br />
</div>
<asp:TextBox ID="txtimgcode"
runat="server"></asp:TextBox>
<br
/>
<asp:Image ID="Image1" runat="server"
ImageUrl="~/CImage.aspx"/>
<br
/>
<asp:Button ID="Button1"
runat="server"
onclick="Button1_Click"
Text="Button"
/>
</form>
</body>
</html>
Default.aspx.cs
using System;
using
System.Collections.Generic;
using System.Web;
using System.Web.UI;
using
System.Web.UI.WebControls;
public partial class _Default : System.Web.UI.Page
{
protected void
Page_Load(object sender, EventArgs e)
{
}
protected void Button1_Click(object sender, EventArgs
e)
{
if (this.txtimgcode.Text == this.Session["CaptchaImageText"].ToString())
{
lblmsg.Text = "Excellent.......";
}
else
{
lblmsg.Text = "image code is not valid.";
}
this.txtimgcode.Text
= "";
}
}
CImage.aspx.cs(link
page of image)
using System;
using
System.Collections.Generic;
using System.Web;
using System.Web.UI;
using
System.Web.UI.WebControls;
using
System.Drawing.Imaging;
public partial class CImage : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs
e)
{
// Create a
random code and store it in the Session object.
this.Session["CaptchaImageText"] =
GenerateRandomCode();
// Create a
CAPTCHA image using the text stored in the Session object.
RandomImage
ci = new RandomImage(this.Session
["CaptchaImageText"].ToString(),
300, 75);
// Change the
response headers to output a JPEG image.
this.Response.Clear();
this.Response.ContentType
= "image/jpeg";
// Write the
image to the response stream in JPEG format.
ci.Image.Save(this.Response.OutputStream,
ImageFormat.Jpeg);
// Dispose of
the CAPTCHA image object.
ci.Dispose();
}
//
Function to generate random string with Random class.
private string GenerateRandomCode()
{
Random
r = new Random();
string
s = "";
for (int j = 0; j < 5;j++)
{
int
i = r.Next(3);
int
ch;
switch
(i)
{
case
1:
ch = r.Next(0, 9);
s = s + ch.ToString();
break;
case
2:
ch = r.Next(65, 90);
s = s + Convert.ToChar(ch).ToString();
break;
case
3:
ch = r.Next(97, 122);
s = s + Convert.ToChar(ch).ToString();
break;
default:
ch = r.Next(97, 122);
s = s + Convert.ToChar(ch).ToString();
break;
}
r.NextDouble();
r.Next(100, 1999);
}
return
s;
}}
Add a class file in the website……..
Name the class file as RandomImage.cs…….
RandomImage.cs
//Extra name space
using System.Drawing;
using
System.Drawing.Drawing2D;
using
System.Drawing.Imaging;
using System.Drawing.Text;
using System;
public class RandomImage
{
//Default
Constructor
public
RandomImage() { }
//property
public string Text
{
get { return this.text; }
}
public Bitmap Image
{
get { return this.image; }
}
public int Width
{
get { return this.width; }
}
public int Height
{
get { return this.height; }
}
//Private
variable
private string text;
private int width;
private int height;
private Bitmap image;
private Random random = new
Random();
//Methods
declaration
public
RandomImage(string s, int
width, int height)
{
this.text
= s;
this.SetDimensions(width,
height);
this.GenerateImage();
}
public void Dispose()
{
GC.SuppressFinalize(this);
this.Dispose(true);
}
protected virtual void Dispose(bool disposing)
{
if
(disposing)
this.image.Dispose();
}
private void SetDimensions(int
width, int height)
{
if
(width <= 0)
throw
new ArgumentOutOfRangeException("width", width,
"Argument
out of range, must be greater than zero.");
if
(height <= 0)
throw
new ArgumentOutOfRangeException("height", height,
"Argument
out of range, must be greater than zero.");
this.width
= width;
this.height
= height;
}
private void GenerateImage()
{
Bitmap
bitmap = new Bitmap
(this.width,
this.height, PixelFormat.Format32bppArgb);
Graphics
g = Graphics.FromImage(bitmap);
g.SmoothingMode = SmoothingMode.AntiAlias;
Rectangle
rect = new Rectangle(0,
0, this.width, this.height);
HatchBrush hatchBrush = new HatchBrush(HatchStyle.SmallConfetti, Color.LightGray,
Color.White);
g.FillRectangle(hatchBrush, rect);
SizeF
size;
float
fontSize = rect.Height + 1;
Font
font;
do
{
fontSize--;
font = new
Font(FontFamily.GenericSansSerif,
fontSize, FontStyle.Bold);
size = g.MeasureString(this.text, font);
} while
(size.Width > rect.Width);
StringFormat
format = new StringFormat();
format.Alignment = StringAlignment.Center;
format.LineAlignment = StringAlignment.Center;
GraphicsPath
path = new GraphicsPath();
//path.AddString(this.text,
font.FontFamily, (int) font.Style,
// font.Size, rect, format);
path.AddString(this.text,
font.FontFamily, (int)font.Style, 75, rect,
format);
float
v = 4F;
PointF[]
points =
{
new
PointF(this.random.Next(rect.Width)
/ v, this.random.Next( rect.Height) / v),
new PointF(rect.Width - this.random.Next(rect.Width)
/ v, this.random.Next(rect.Height) / v),
new
PointF(this.random.Next(rect.Width)
/ v, rect.Height - this.random.Next(rect.Height)
/ v),
new PointF(rect.Width - this.random.Next(rect.Width)
/ v,rect.Height - this.random.Next(rect.Height)
/ v)
};
Matrix
matrix = new Matrix();
matrix.Translate(0F, 0F);
path.Warp(points, rect, matrix, WarpMode.Perspective, 0F);
hatchBrush = new HatchBrush(HatchStyle.Percent10,
Color.Black, Color.SkyBlue);
g.FillPath(hatchBrush, path);
int m =
Math.Max(rect.Width, rect.Height);
for (int i = 0; i < (int)(rect.Width
* rect.Height / 30F); i++)
{
int
x = this.random.Next(rect.Width);
int
y = this.random.Next(rect.Height);
int
w = this.random.Next(m / 50);
int
h = this.random.Next(m / 50);
g.FillEllipse(hatchBrush, x, y, w,
h);
}
font.Dispose();
hatchBrush.Dispose();
g.Dispose();
this.image
= bitmap;
}
}
#SradhaWebCreations
Contact : +91-9040573923, +91-7008182025
http://sradhawebcreations.com/
http://sradhawebcreations.blogspot.in/
https://facebook.com/sradhawebcreations
https://www.facebook.com/Sradhawebeducation/
No comments:
Post a Comment