Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 18594|Відповідь: 1

[ASP.NET] asp.net принцип і код генерації капчі зображень

[Копіювати посилання]
Опубліковано 02.04.2015 10:26:51 | | |
використовуючи System;
використовуючи System.Data;
використовуючи System.Configuration;
використовуючи System.Collections;
використовуючи System.Web;
використання System.Web.Security;
використовуючи System.Web.UI;
використання System.Web.UI.WebControls;
використовуючи System.Web.UI.WebControls.WebParts;
використання System.Web.UI.HtmlControls;
використовуючи System.Drawing.Design;
використовуючи System.Drawing;
публічний частковий клас imagecode: System.Web.UI.Page
{
захищена порожнеча Page_Load(відправник об'єкта, EventArgs e)
{
саме так. CreateCheckCodeImage(RndNum());

}

приватна струна RndNum()
{
int number;
код символу;
string checkCode = String.Empty;

System.Random random = new Random();

для (int i = 0; I < 4; i++)
{
число = випадкове. Next();
якщо (число % 2 == 0)
код = (символ)('0' + (символ)(число % 10));
інше
код = (символ)('A' + (символ)(число % 26));
checkCode += код. ToString();
}
Response.Cookies.Add (новий HttpCookie("yzmcode", checkCode));
код перевірки повернення;
}
private void CreateCheckCodeImage(string checkCode)
{
if (checkCode == null || checkCode.Trim() == String.Empty)
повернення;
System.Drawing.Bitmap image = новий System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Графіка g = Graphics.FromImage(image);
спробуйте
{
//生成随机生成器
Випадковий випадковий = новий Випадковий();
//清空图片背景色
g.Clear (кольор.білий);
//画图片的背景噪音线
для (int i = 0; Мені < 25; i++)
{
int x1 = випадковий. Next(image. ширина);
int x2 = випадковий. Next(image. ширина);
int y1 = випадковий. Next(image. Висота);
int y2 = випадковий. Next(image. Висота);
g.DrawLine (нова ручка (кольор.срібна), x1, y1, x2, y2);
}

Font font = новий System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
System.Drawing.Drawing2D.Лінійний градієнтПензель = новий System.Drawing.Drawing2D.Лінійний градієнтПензель(новий прямокутник(0, 0, зображення. Ширина, зображення. Зріст), Колір.Синій, Колір.Темно-червоний, 1.2f, справжньо);
g.DrawString(checkCode, шрифт, пензлик, 2, 2);
//画图片的前景噪音点
для (int i = 0; Я < 100; i++)
{
int x = випадковий. Next(image. ширина);
int y = випадковий. Next(image. Висота);
Зображення. SetPixel(x, y, Color.FromArgb(випадковий. Далі()));
}
//画图片的边框线
g.DrawRectangle(нова ручка(кольорова.срібна), 0, 0, зображення. Ширина — 1, зображення. Зріст — 1);
System.IO.MemoryStream ms = новий System.IO.MemoryStream();
Зображення. Зберегти(ms, System.Drawing.Imaging.ImageFormat.Gif);
Response.ClearContent();
Response.ContentType = «зображення/гіфка»;
Response.BinaryWrite(ms. ToArray());
}
зрештою
{
g.Dispose();
Зображення. Позбавлятися();
}
}

}
//验证码使用页login.aspx中的代码
<asp:ImageButton ID="yzm" runat="server" ImageUrl="imagecode.aspx" />
<asp:LinkButton ID="ChangeCode" runat="server" text="Не бачите чітко? Змініть код верифікації" />
<asp:Button ID="Button1" runat="server" Text = "Button" /></div>
//ogin.aspx.cs中的代码
Додати до
Вам не потрібно писати код, натисніть «Не бачите чітко?» Змініть код верифікації", щоб пізніше оновити код перевірки
захищена порожнеча ChangeCode_Click(відправник об'єкта, EventArgs e)
{
}
//提交按钮代码这里是通过cookies来验证的
захищена порожнеча Button1_Click(object sender, EventArgs e)
{
якщо (String.Compare(Request.Cookies["yzmcode"]. Значення, a.Text, true) != 0)
{
Response.Write("<scrip去掉t>alert('CAPTCHA error!')"</scrip去掉t>);
}
інше
{ Response.Write("<scrip去掉t>alert('Validate!!')</scrip去掉t>"; }
}




Попередній:IE зупиняє віддалене виконання команд
Наступний:asp.net реалізувати файли cookie для збереження значень
Опубліковано 04.04.2015 10:58:42 |
Я вже можу ним користуватися
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com