Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 18594|Răspunde: 1

[ASP.NET] asp.net principiul și codul generării captcha-urilor de imagine

[Copiază linkul]
Postat pe 02.04.2015 10:26:51 | | |
folosind Sistem;
folosind System.Data;
folosind System.Configuration;
folosind System.Collections;
folosind System.Web;
folosind System.Web.Security;
folosind System.Web.UI;
folosind System.Web.UI.WebControls;
folosind System.Web.UI.WebControls.WebParts;
folosind System.Web.UI.HtmlControls;
folosind System.Drawing.Design;
folosind System.Drawing;
Cod imagine de clasă parțială publică : System.Web.UI.Page
{
vid protejat Page_Load(object sender, EventArgs e)
{
Asta. CreateCheckCodeImage(RndNum());

}

șirul privat RndNum()
{
număr int;
cod char;
verificare string = String.Empty;

System.Random random = new Random();

pentru (int i = 0; Am < 4; i++)
{
număr = aleatoriu. Next();
dacă (numărul % 2 == 0)
cod = (carac)('0' + (caracter)(număr % 10));
altfel
cod = (car) )('A' + (char) (număr % 26));
checkCode += cod. ToString();
}
Response.Cookies.Add(noul HttpCookie("yzmcode", checkCode));
return checkCode;
}
void privat CreateCheckCodeImage(string checkCode)
{
if (checkCode == null || checkCode.Trim() == String.Empty)
returnare;
Imagine System.Drawing.Bitmap = nou System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Grafică g = Grafică.DinImagine(imagine);
încearcă
{
//生成随机生成器
Random random = noul Random();
//清空图片背景色
g.Clear (Culoare.Alb);
//画图片的背景噪音线
pentru (int i = 0; Am < 25; i++)
{
int x1 = aleatoriu. Următorul (imagine. Lățime);
int x2 = aleatoriu. Următorul (imagine. Lățime);
int y1 = aleatoriu. Următorul (imagine. Înălțime);
int y2 = aleatoriu. Următorul (imagine. Înălțime);
g.DrawLine(nou pix (Color.Argintiu), x1, y1, x2, y2);
}

Font = noul System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, imagine). Lățime, imagine. Înălțime), Color.Blue, Color.DarkRed, 1.2f, adevărat);
g.DrawString(checkCode, font, brush, 2, 2);
//画图片的前景噪音点
pentru (int i = 0; Am < 100; i++)
{
int x = aleatoriu. Următorul (imagine. Lățime);
int y = aleatoriu. Următorul (imagine. Înălțime);
imagine. SetPixel(x, y, Color.FromArgb(random. Următorul ()));
}
//画图片的边框线
g.DrawRectangle (nou Pix (Color.Argintiu), 0, 0, imagine. Lățime - 1, imagine. Înălțime - 1);
System.IO.MemoryStream ms = noul System.IO.MemoryStream();
imagine. Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Răspuns.Conținut Clar();
Response.ContentType = "imagine/Gif";
Răspuns.BinaryWrite(dna. ToArray());
}
în sfârșit
{
g.Elimină();
imagine. Elimină();
}
}

}
//验证码使用页login.aspx中的代码
<asp:ImageButton ID="yzm" runat="server" ImageUrl="imagecode.aspx" />
<asp:LinkButton ID="ChangeCode" runat="server" text="Nu poți vedea clar? Schimbă codul de verificare" />
<asp:Button ID="Button1" runat="server" Text="Button" /></div>
//ogin.aspx.cs中的代码
Adaugă la
Nu trebuie să scrii cod, apasă pe "Nu poți vedea clar?" Schimbă codul de verificare" pentru a reîmprospăta codul de verificare ulterior
Vid protejat ChangeCode_Click(obiect emițător, EventArgs e)
{
}
//提交按钮代码这里是通过cookies来验证的
Vid protejat Button1_Click(object sender, EventArgs e)
{
if (String.Compare(Request.Cookies["yzmcode"]. Valoare, a.Text, adevărat) != 0)
{
Response.Write("<scrip去掉t>alert('CAPTCHA eroare!')"</scrip去掉t>);
}
altfel
{ Response.Write("<scrip去掉t>alert('Validate!!')</scrip去掉t>"; }
}




Precedent:IE oprește execuția comenzilor de la distanță
Următor:asp.net implementează cookie-uri pentru a salva valorile
Postat pe 04.04.2015 10:58:42 |
Deja pot să-l folosesc
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com