Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 18594|Vastaus: 1

[ASP.NET] asp.net kuvien captcha-generoinnin periaate ja koodi

[Kopioi linkki]
Julkaistu 2.4.2015 10.26.51 | | |
käyttämällä Systemiä;
käyttäen System.Dataa;
käyttäen System.Configurationia;
käyttäen System.Collectionsia;
käyttäen System.Webiä;
käyttäen System.Web.Securitya;
käyttäen System.Web.UI:ta;
käyttäen System.Web.UI.WebControls -tiedostoja;
käyttäen System.Web.UI.WebControls.WebParts;
käyttäen System.Web.UI.HtmlControlsia;
käyttäen System.Drawing.Design;
käyttäen System.Drawingia;
Julkinen osittainen luokan kuvakoodi : System.Web.UI.Page
{
suojattu void Page_Load(objektilähettäjä, EventArgs e)
{
Tämä. CreateCheckCodeImage(RndNum());

}

yksityinen merkkijono RndNum()
{
int-numero;
merkkikoodi;
string checkCode = String.Empty;

System.Random random = uusi Random();

kun (int i = 0; I < 4; i++)
{
luku = satunnainen. Next();
jos (luku % 2 == 0)
code = (hahmo)('0' + (char)(luku % 10));
else
code = (hahmo)('A' + (hahmo)(luku % 26));
checkCode += koodi. ToString();
}
Response.Cookies.Add(uusi HttpCookie("yzmcode", checkCode));
return checkCode;
}
private void CreateCheckCodeImage(string checkCode)
{
if (checkCode == null || checkCode.Trim() == String.Empty)
paluuta;
System.Drawing.Bitmap-kuva = uusi System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Grafiikka g = Graphics.FromImage(image);
yritä
{
//生成随机生成器
Satunnainen satunnainen = uusi satunnainen();
//清空图片背景色
g.Clear (Väri.Valkoinen);
//画图片的背景噪音线
kun (int i = 0; < 25; i++)
{
int x1 = satunnainen. Seuraava (kuva. Leveys);
int x2 = satunnainen. Seuraava (kuva. Leveys);
int y1 = satunnainen. Seuraava (kuva. pituus);
int y2 = satunnainen. Seuraava (kuva. pituus);
g.DrawLine (uusi kynä (väri.hopea), x1, y1, x2, y2);
}

Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, kuva. Leveys, kuva. Pituus), väri.Sininen, väri.tummanpunainen, 1.2f, true);
g.DrawString(tarkistuskoodi, fontti, sivellin, 2, 2);
//画图片的前景噪音点
kun (int i = 0; I < 100; i++)
{
int x = satunnainen. Seuraava (kuva. Leveys);
int y = satunnainen. Seuraava (kuva. pituus);
Kuva. SetPixel(x, y, Color.FromArgb(random. Next()));
}
//画图片的边框线
g.DrawRectangle(uusi kynä (väri.hopea), 0, 0, kuva. Leveys - 1, kuva. Pituus - 1);
System.IO.MemoryStream ms = uusi System.IO.MemoryStream();
Kuva. Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "kuva/Gif";
Vastaus.BinaryWrite(ms. ToArray());
}
vihdoin
{
g.Dispose();
Kuva. Dispose();
}
}

}
//验证码使用页login.aspx中的代码
<asp:ImageButton ID="yzm" runat="server" ImageUrl="imagecode.aspx" />
<asp:LinkButton ID="ChangeCode" runat="server" text="Et näe selvästi? Vaihda vahvistuskoodi" />
<asp:Button ID="Button1" runat="server" Text="Button" /></div>
//ogin.aspx.cs中的代码
Lisää
Sinun ei tarvitse kirjoittaa koodia, klikkaa "Ei näe selvästi?" Vaihda vahvistuskoodi" päivittääksesi vahvistuskoodin myöhemmin
suojattu void ChangeCode_Click(objektilähettäjä, EventArgs e)
{
}
//提交按钮代码这里是通过cookies来验证的
suojattu void Button1_Click(objektilähettäjä, EventArgs e)
{
if (String.Compare(Request.Cookies["yzmcode"]. Arvo, a.Teksti, tosi) != 0)
{
Response.Write("<scrip去掉t>alert('CAPTCHA-virhe!')</scrip去掉t>");
}
else
{ Response.Write("<scrip去掉t>alert('Valido!!')</scrip去掉t>"; }
}




Edellinen:IE lopettaa etäkomentojen suorituksen
Seuraava:asp.net toteuttaa evästeitä arvojen tallentamiseksi
Julkaistu 4.4.2015 10.58.42 |
Voin jo käyttää sitä
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com