Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 18594|Atbildi: 1

[ASP.NET] asp.net attēla captcha ģenerēšanas princips un kods

[Kopēt saiti]
Publicēts 02.04.2015 10:26:51 | | |
izmantojot Sistēmu;
izmantojot System.Data;
izmantojot System.Configuration;
izmantojot System.Collections;
izmantojot System.Web;
izmantojot System.Web.Security;
izmantojot System.Web.UI;
izmantojot System.Web.UI.WebControls;
izmantojot System.Web.UI.WebControls.WebParts;
izmantojot System.Web.UI.HtmlControls;
izmantojot System.Drawing.Design;
izmantojot System.Drawing;
publiskais daļējās klases attēla kods : System.Web.UI.Page
{
aizsargāts anulēts Page_Load (objekta sūtītājs, EventArgs e)
{
Šis. CreateCheckCodeImage(RndNum());

}

privātā virkne RndNum()
{
int numurs;
char kods;
string checkCode = String.Empty;

System.Random random = jauns Random();

for (int i = 0; I < 4; i++)
{
skaitlis = nejaušs. Nākamais ();
ja (skaitlis % 2 == 0)
kods = (zīme)('0' + (zīme)(skaitlis % 10));
citādi
kods = (zīme)('A' + (zīme)(skaitlis % 26));
checkCode += kods. ToString();
}
Response.Cookies.Add(jauns HttpCookie("yzmcode", kontrolkods));
atgriešanas kontrolkods;
}
private void CreateCheckCodeImage(string checkCode)
{
if (checkCode == null || checkCode.Trim() == String.Empty)
atgriešanās;
System.Drawing.Bitmap attēls = jauns System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Grafika g = Graphics.FromImage(attēls);
izmēģināt
{
//生成随机生成器
Nejaušs nejaušs = jauns Random();
//清空图片背景色
g.Skaidrs (krāsa.balts);
//画图片的背景噪音线
for (int i = 0; I < 25; i++)
{
int x1 = nejaušs. Nākamais (attēls. Platums);
int x2 = nejaušs. Nākamais (attēls. Platums);
int y1 = nejaušs. Nākamais (attēls. Augstums);
int y2 = nejaušs. Nākamais (attēls. Augstums);
g.DrawLine(jauna pildspalva (krāsa.sudrabs), 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(jauns taisnstūris(0, 0, attēls. Platums, attēls. Augstums), Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(kontrolkods, fonts, ota, 2, 2);
//画图片的前景噪音点
for (int i = 0; I < 100; i++)
{
int x = nejaušs. Nākamais (attēls. Platums);
int y = nejaušs. Nākamais (attēls. Augstums);
attēls. SetPixel(x, y, Color.FromArgb(nejauši. Nākamais ()));
}
//画图片的边框线
g.DrawRectangle(jauna pildspalva(krāsa.sudrabs), 0, 0, attēls. Platums - 1, attēls. Augums - 1);
System.IO.MemoryStream ms = jauns System.IO.MemoryStream();
attēls. Saglabāt(ms, System.Drawing.Imaging.ImageFormat.Gif);
Atbilde.Skaidrs saturs();
Response.ContentType = "attēls/GIF";
Response.BinaryWrite(ms. ToArray());
}
Beidzot
{
g.Iznīcināt();
attēls. Iznīcināt ();
}
}

}
//验证码使用页login.aspx中的代码
<asp:ImageButton ID="yzm" runat="serveris" ImageUrl="imagecode.aspx" />
<asp:LinkButton ID="ChangeCode" runat="server" text="Vai nevarat skaidri redzēt? Mainīt verifikācijas kodu" />
<asp:Button ID="Button1" runat="server" text="Button" /></div>
//ogin.aspx.cs中的代码
Pievienot
Jums nav jāraksta kods, noklikšķiniet uz "Nevar skaidri redzēt?" Verifikācijas koda maiņa", lai vēlāk atsvaidzinātu verifikācijas kodu
aizsargāts anulēts ChangeCode_Click(objekta sūtītājs, EventArgs e)
{
}
//提交按钮代码这里是通过cookies来验证的
aizsargāts spēkā neesošs Button1_Click(objekta sūtītājs, EventArgs e)
{
if (String.Compare(Request.Cookies["yzmcode"]. Vērtība, a.Teksts, true) != 0)
{
Response.Write("<scrip去掉t>brīdinājums('CAPTCHA kļūda!')"</scrip去掉t>);
}
citādi
{ Response.Write("<scrip去掉t>brīdinājums('Apstiprināt!!')</scrip去掉t>"; }
}




Iepriekšējo:IE nogalina attālo komandu izpildi
Nākamo:asp.net ieviest sīkdatnes, lai saglabātu vērtības
Publicēts 04.04.2015 10:58:42 |
Es jau varu to izmantot
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com