Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 18594|Yanıt: 1

[ASP.NET] asp.net görüntü captcha oluşturma ilkesi ve kodu

[Bağlantıyı kopyala]
Yayınlandı 2.04.2015 10:26:51 | | |
System kullanmak;
System.Data kullanılarak kullanılır;
System.Configuration kullanılarak;
System.Collections kullanarak;
System.Web kullanarak;
System.Web.Security kullanarak;
System.Web.UI kullanılarak;
System.Web.UI.WebControl kullanarak;
System.Web.UI.WebControls.WebParts kullanarak;
System.Web.UI.HtmlControl kullanarak;
System.Drawing.Design kullanmak;
System.Drawing kullanılarak;
Kamu kısmi sınıf görüntü kodu : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Bu. CreateCheckCodeImage(RndNum());

}

özel string RndNum()
{
int numarası;
karakter kodu;
string checkCode = String.Empty;

System.Random random = yeni Random();

için (int i = 0; I < 4; i++)
{
sayı = rastgele. Next();
eğer (sayı % 2 == 0)
kod = (karakter)('0' + (karakter)(sayı % 10));
else
kod = (karakter)('A' + (char)(sayı % 26));
checkCode += kod. ToString();
}
Response.Cookies.Add(yeni HttpCookie("yzmcode", checkCode));
return checkCode;
}
private void CreateCheckCodeImage(string checkCode)
{
if (checkCode == null || checkCode.Trim() == String.Empty)
Dönüş;
System.Drawing.Bitmap görüntüsü = yeni System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Grafikler g = Grafikler.FromImage(image);
Denemek
{
//生成随机生成器
Rastgele rastgele = yeni Random();
//清空图片背景色
g.Şeffaf (Renk.Beyaz);
//画图片的背景噪音线
için (int i = 0; 25 <; i++)
{
int x1 = rastgele. Sonrakı(görsel. genişlik);
int x2 = rastgele. Sonrakı(görsel. genişlik);
int y1 = rastgele. Sonrakı(görsel. boy);
int y2 = rastgele. Sonrakı(görsel. boy);
g.DrawLine (yeni Pen(Color.Silver), x1, y1, x2, y2);
}

Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.LinearGradientBrush brush = yeni System.Drawing.Drawing2D.LinearGradientBrush(yeni Dikdörtgen(0, 0, resim. Genişlik, görüntü. Boy), Color.Blue, Color.DarkRed, 1.2f, doğru);
g.DrawString(checkCode, font, brush, 2, 2);
//画图片的前景噪音点
için (int i = 0; 100 <; i++)
{
int x = rastgele. Sonrakı(görsel. genişlik);
int y = rastgele. Sonrakı(görsel. boy);
İmaj. SetPixel(x, y, Color.FromArgb(random. Next()));
}
//画图片的边框线
g.DrawRectangle(yeni Kalem (Renkli.Gümüş), 0, 0, görsel. Genişlik - 1, görüntü. Boy - 1);
System.IO.MemoryStream ms = yeni System.IO.MemoryStream();
İmaj. Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = "görsel/Gif";
Yanıt.İkilikYaz(ms. ToArray());
}
nihayet
{
g.Disposal();
İmaj. Disposal();
}
}

}
//验证码使用页login.aspx中的代码
<asp:ImageButton ID="yzm" runat="sunucu" ImageUrl="imagecode.aspx" />
<asp:LinkButton ID="ChangeCode" runat="sunucu" text="Net göremiyor mu? Doğrulama kodunu değiştir" />
<asp:Button ID="Button1" runat="sunucu" Text="Button" /></div>
//ogin.aspx.cs中的代码
Ekle
Kod yazmanıza gerek yok, "Net göremiyor musunuz?" tuşuna tıklayın. doğrulama kodunu değiştirin" diye doğrulama kodunu daha sonra yenileyin
protected void ChangeCode_Click(object sender, EventArgs e)
{
}
//提交按钮代码这里是通过cookies来验证的
protected void Button1_Click(object sender, EventArgs e)
{
if (String.Compare(Request.Cookies["yzmcode"]. Değer, a.Metin, doğru) != 0)
{
Response.Write("<scrip去掉t>alert('CAPTCHA hatası!')</scrip去掉t>");
}
else
{ Response.Write("<scrip去掉t>alert('Doğrulama!!')</scrip去掉t>"; }
}




Önceki:IE uzaktan komut yürütmesini öldürür
Önümüzdeki:asp.net değerleri kaydetmek için çerezler uygular
Yayınlandı 4.04.2015 10:58:42 |
Zaten kullanabiliyorum
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com