Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 18594|Atsakyti: 1

[ASP.NET] asp.net vaizdo captcha generavimo principas ir kodas

[Kopijuoti nuorodą]
Paskelbta 2015-04-02 10:26:51 | | |
naudojantis Sistema;
naudojant System.Data;
naudojant System.Configuration;
naudojant System.Collections;
naudojant System.Web;
naudojant System.Web.Security;
naudojant System.Web.UI;
naudojant System.Web.UI.WebControls;
naudojant System.Web.UI.WebControls.WebParts;
naudojant System.Web.UI.HtmlControls;
naudojant System.Drawing.Design;
naudojant System.Drawing;
viešas dalinės klasės vaizdo kodas : System.Web.UI.Page
{
apsaugotas void Page_Load(objekto siuntėjas, EventArgs e)
{
tai. CreateCheckCodeImage(RndNum());

}

privati eilutė RndNum()
{
int numeris;
char kodas;
eilutė checkCode = String.Empty;

System.Random random = naujas Random();

for (int i = 0; I < 4; i++)
{
skaičius = atsitiktinis. Kitas();
if (skaičius % 2 == 0)
kodas = (simbolis)('0' + (simbolis)(skaičius % 10));
kitaip
kodas = (simbolis)("A" + (simbolis)(skaičius % 26));
checkCode += kodas. ToString();
}
Response.Cookies.Add(naujas HttpCookie("yzmcode", checkCode));
grąžinimo čekis;
}
privatus void CreateCheckCodeImage(eilutės checkCode)
{
if (checkCode == null || checkCode.Trim() == String.Empty)
grąžinimas;
System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Grafika g = Graphics.FromImage(vaizdas);
Pabandykite
{
//生成随机生成器
Atsitiktinis atsitiktinis = naujas atsitiktinis ();
//清空图片背景色
g.Skaidrus (spalvotas.baltas);
//画图片的背景噪音线
for (int i = 0; I < 25; i++)
{
int x1 = atsitiktinis. Kitas(vaizdas. Plotis);
int x2 = atsitiktinis. Kitas(vaizdas. Plotis);
int y1 = atsitiktinis. Kitas(vaizdas. Aukštis);
int y2 = atsitiktinis. Kitas(vaizdas. Aukštis);
g.DrawLine(naujas rašiklis (spalva.sidabras), x1, y1, x2, y2);
}

Šrifto šriftas = naujas System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush brush = naujas System.Drawing.Drawing2D.LinearGradientBrush(naujas stačiakampis(0, 0, vaizdas. Plotis, vaizdas. Aukštis), Spalva.Mėlyna, Spalva.Tamsiai raudona, 1.2f, tiesa);
g.DrawString(checkCode, šriftas, teptukas, 2, 2);
//画图片的前景噪音点
for (int i = 0; I < 100; i++)
{
int x = atsitiktinis. Kitas(vaizdas. Plotis);
int y = atsitiktinis. Kitas(vaizdas. Aukštis);
vaizdas. SetPixel(x, y, Color.FromArgb(atsitiktinis. Kitas()));
}
//画图片的边框线
g.DrawRectangle(naujas rašiklis (spalvotas.sidabras), 0, 0, vaizdas. Plotis - 1, vaizdas. Aukštis - 1);
System.IO.MemoryStream ms = naujas System.IO.MemoryStream();
vaizdas. Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Atsakymas.Aiškus turinys();
Response.ContentType = "vaizdas/GIF";
Response.BinaryWrite(ms. ToArray());
}
Pagaliau
{
g.Išmesti();
vaizdas. Išmesti();
}
}

}
//验证码使用页login.aspx中的代码
<asp:ImageButton ID="yzm" runat="server" ImageUrl="imagecode.aspx" />
<asp:LinkButton ID="ChangeCode" runat="server" text="Nematote aiškiai? Pakeiskite patvirtinimo kodą" />
<asp:Button ID="Button1" runat="server" Text="Button" /></div>
//ogin.aspx.cs中的代码
Pridėti prie
Jums nereikia rašyti jokio kodo, spustelėkite "Nematote aiškiai?" Pakeiskite patvirtinimo kodą", kad vėliau atnaujintumėte patvirtinimo kodą
apsaugotas void ChangeCode_Click(objekto siuntėjas, EventArgs e)
{
}
//提交按钮代码这里是通过cookies来验证的
apsaugotas void Button1_Click(objekto siuntėjas, EventArgs e)
{
if (String.Compare(Request.Cookies["yzmcode"]. Reikšmė, a.Tekstas, teisinga) != 0)
{
Response.Write("<scrip去掉t>įspėjimas('CAPTCHA klaida!')"</scrip去掉t>);
}
kitaip
{ Response.Write("<scrip去掉t>alert('Patvirtinti!!')</scrip去掉t>"; }
}




Ankstesnis:IE žudo nuotolinį komandų vykdymą
Kitą:asp.net įdiegti slapukus vertybėms išsaugoti
Paskelbta 2015-04-04 10:58:42 |
Aš jau galiu juo naudotis
Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com