See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 18594|Vastuse: 1

[ASP.NET] asp.net pildi captcha genereerimise põhimõte ja kood

[Kopeeri link]
Postitatud 02.04.2015 10:26:51 | | |
kasutades süsteemi;
kasutades System.Data;
kasutades System.Configurationi;
kasutades System.Collections'i;
kasutades System.Webi;
kasutades System.Web.Securityt;
kasutades System.Web.UI;
kasutades System.Web.UI.WebControls;
kasutades System.Web.UI.WebControls.WebParts;
kasutades System.Web.UI.HtmlControls'i;
kasutades System.Drawing.Design;
kasutades System.Drawingi;
avalik osaline klassi pildikood : System.Web.UI.Page
{
kaitstud void Page_Load(objekti saatja, EventArgs e)
{
See. CreateCheckCodeImage(RndNum());

}

privaatstring RndNum()
{
int number;
tegelase kood;
string checkCode = String.Empty;

System.Random random = uus Random();

for (int i = 0; I < 4; i++)
{
number = juhuslik. Next();
kui (arv % 2 == 0)
kood = (tegelane)('0' + (tegelane)(arv % 10));
else
kood = (tegelane)('A' + (tegelane)(arv % 26));
checkCode += kood. ToString();
}
Response.Cookies.Add(uus HttpCookie("yzmcode", checkCode));
return checkCode;
}
private void CreateCheckCodeImage(string checkCode)
{
if (checkCode == null || checkCode.Trim() == String.Empty)
tagasitulek;
System.Drawing.Bitmap image = uus System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Graafika g = Graphics.FromImage(image);
proovi
{
//生成随机生成器
Juhuslik juhuslik = uus Random();
//清空图片背景色
g.Selge (Värv.Valge);
//画图片的背景噪音线
for (int i = 0; Ma < 25; i++)
{
int x1 = juhuslik. Järgmine(pilt. Laius);
int x2 = juhuslik. Järgmine(pilt. Laius);
int y1 = juhuslik. Järgmine(pilt. Pikkus);
int y2 = juhuslik. Järgmine(pilt. Pikkus);
g.DrawLine (uus pliiats (värv.hõbe), x1, y1, x2, y2);
}

Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
System.Joonistus.Joonistus2D.LinearGradientPintsel = uus System.Joonistus.Joonistus2D.LinearGradientBrush(uus ristkülik(0, 0, pilt. Laius, pilt. Kõrgus), Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(kontrollkood, font, pintsel, 2, 2);
//画图片的前景噪音点
for (int i = 0; I < 100; i++)
{
int x = juhuslik. Järgmine(pilt. Laius);
int y = juhuslik. Järgmine(pilt. Pikkus);
pilt. SetPixel(x, y, Color.FromArgb(random. Next()));
}
//画图片的边框线
g.DrawRectangle (uus pastakas (värv.hõbe), 0, 0, pilt. Laius - 1, pilt. Pikkus - 1);
System.IO.MemoryStream ms = uus System.IO.MemoryStream();
pilt. Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "pilt/Gif";
Vastus.BinaryWrite(ms. ToArray());
}
lõpuks
{
g.Dispose();
pilt. Dispose();
}
}

}
//验证码使用页login.aspx中的代码
<asp:ImageButton ID="yzm" runat="server" ImageUrl="imagecode.aspx" />
<asp:LinkButton ID="ChangeCode" runat="server" text="Ei näe selgelt? Muuda verifitseerimiskoodi" />
<asp:Button ID="Button1" runat="server" Text="Button" /></div>
//ogin.aspx.cs中的代码
Lisa
Sul pole vaja koodi kirjutada, klõpsa "Ei näe selgelt?" Muuda verifitseerimiskood" ja uuenda verifitseerimiskoodi hiljem
kaitstud void ChangeCode_Click(objekti saatja, EventArgs e)
{
}
//提交按钮代码这里是通过cookies来验证的
kaitstud void Button1_Click(objekti saatja, EventArgs e)
{
if (String.Compare(Request.Cookies["yzmcode"]. Väärtus, a.Tekst, tõene) != 0)
{
Response.Write("<scrip去掉t>alert('CAPTCHA error!')</scrip去掉t>");
}
else
{ Response.Write("<scrip去掉t>alert('Valide!!')</scrip去掉t>"; }
}




Eelmine:IE lõpetab kaugkäsu täitmise
Järgmine:asp.net rakendada küpsiseid väärtuste säästmiseks
Postitatud 04.04.2015 10:58:42 |
Ma saan seda juba kasutada
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com