Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 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
{
protected void Page_Load(object sender, EventArgs e)
{
Вот именно. CreateCheckCodeImage(RndNum());

}

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

System.Random random = new Random();

для (int i = 0; I < 4; i++)
{
число = случайно. Далее();
если (число % 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 = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Графика g = Графика.FromImage(image);
Попробуй
{
//生成随机生成器
Случайный случайный = новый Случайный();
//清空图片背景色
g.Clear (цветной белый);
//画图片的背景噪音线
для (int i = 0; Мне < 25; i++)
{
int x1 = случайно. Далее(изображение. ширина);
int x2 = случайно. Далее(изображение. ширина);
int y1 = случайно. Далее(изображение. Высота);
int y2 = случайно. Далее(изображение. Высота);
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, изображение). Ширина, изображение. Height), Color.Blue, Color.DarkRed, 1.2f, true);
g.DrawString(checkCode, шрифт, кисть, 2, 2);
//画图片的前景噪音点
для (int i = 0; Я < 100; i++)
{
int x = случайно. Далее(изображение. ширина);
int y = случайно. Далее(изображение. Высота);
Имидж. SetPixel(x, y, Color.FromArgb(random. Следующий()));
}
//画图片的边框线
g.DrawRectangle(новое перо (Color.Silver), 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();
Имидж. 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中的代码
Добавить к
Вам не нужно писать код, нажмите «Не видите ясно?» Измените код верификации», чтобы позже обновить код подтверждения
protected void ChangeCode_Click(object sender, EventArgs e)
{
}
//提交按钮代码这里是通过cookies来验证的
protected void 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