Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 18594|Respuesta: 1

[ASP.NET] asp.net el principio y el código de la generación de captcha de imagen

[Copiar enlace]
Publicado en 2/4/2015 10:26:51 | | |
usando Sistema;
usando System.Data;
usando System.Configuration;
usando System.Collections;
usando System.Web;
usando System.Web.Security;
usando System.Web.UI;
usando System.Web.UI.WebControls;
usando System.Web.UI.WebControls.WebParts;
usando System.Web.UI.HtmlControls;
usando System.Drawing.Design;
usando System.Drawing;
Código de imagen de clase parcial pública: System.Web.UI.Page
{
Vacío protegido Page_Load(object sender, EventArgs e)
{
éste. CreateCheckCodeImage(RndNum());

}

cadena privada RndNum()
{
número int;
código de caracteres;
chequeCódigo = Cadena.Vacío;

System.Random random = new Random();

para (int i = 0; Yo < 4; i++)
{
número = aleatorio. Next();
si (número % 2 == 0)
código = (char) (char) (0' + (char) número % 10));
si no,
código = (carácter)('A' + (carácter)(número % 26));
checkCode += código. ToString();
}
Response.Cookies.Add(nuevo HttpCookie("yzmcode", checkCode));
return checkCode;
}
void privado CreateCheckCodeImage(string checkCode)
{
if (checkCode == null || checkCode.Trim() == String.Empty)
devolución;
Imagen de System.Drawing.Bitmap = nuevo System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Gráficos g = Gráficos.DeImagen(imagen);
Prueba
{
//生成随机生成器
Aleatorio aleatorio = nuevo Aleatorio();
//清空图片背景色
g.Transparente (Color.Blanco);
//画图片的背景噪音线
para (int i = 0; Yo < 25; i++)
{
int x1 = aleatorio. Siguiente (imagen. Ancho);
int x2 = aleatorio. Siguiente (imagen. Ancho);
int y1 = aleatorio. Siguiente (imagen. Altura);
int y2 = aleatorio. Siguiente (imagen. Altura);
g.DrawLine(nuevo Plumón(Color.Plate), x1, y1, x2, y2);
}

Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
Sistema.Dibujo.Dibujo2D.DegradadoLinealPincelBrocha = nuevo Sistema.Dibujo.Dibujo2D.GradienteLinealPincelBrocha(nuevo Rectángulo(0, 0, imagen. Ancho, imagen. Altura), Color.Azul, Color.Rojo oscuro, 1,2f, verdadero);
g.DrawString(checkCode, fuente, pincel, 2, 2);
//画图片的前景噪音点
para (int i = 0; Yo < 100; i++)
{
int x = aleatorio. Siguiente (imagen. Ancho);
int y = aleatorio. Siguiente (imagen. Altura);
imagen. SetPixel(x, y, Color.FromArgb(random. Next()));
}
//画图片的边框线
g. DrawRectangle (nuevo Pen (Color.Silver), 0, 0, imagen. Ancho - 1, imagen. Altura - 1);
System.IO.MemoryStream ms = nuevo System.IO.MemoryStream();
imagen. Guarda (ms, System.Drawing.Imaging.ImageFormat.Gif);
Respuesta.ContenidoClaro();
Response.ContentType = "imagen/Gif";
Response.BinaryWrite(ms. ToArray());
}
finalmente
{
g.Dispone();
imagen. Dispone();
}
}

}
//验证码使用页login.aspx中的代码
<asp:ImageButton ID="yzm" runat="server" ImageUrl="imagecode.aspx" />
<asp:LinkButton ID="ChangeCode" runat="server" text="¿No ves claramente? Cambia el código de verificación" />
<asp:Button ID="Button1" runat="server" Text="Button" /></div>
//ogin.aspx.cs中的代码
Aumentar
No necesitas escribir código, haz clic en "¿No puedes ver claramente?" Cambiar el código de verificación" para actualizar el código de verificación más adelante
Vacío protegido ChangeCode_Click(object sender, EventArgs e)
{
}
//提交按钮代码这里是通过cookies来验证的
Vacío protegido Button1_Click(emisor de objetos, EventArgs e)
{
si (String.Compare(Request.Cookies["yzmcode"]. Valor, a.Texto, verdadero) != 0)
{
Response.Write("<scrip去掉t>alert('CAPTCHA error!')"</scrip去掉t>);
}
si no,
{ Response.Write("<scrip去掉t>alert('Validate!!')</scrip去掉t>"; }
}




Anterior:IE elimina la ejecución de comandos remotos
Próximo:asp.net implementar cookies para guardar valores
Publicado en 4/4/2015 10:58:42 |
Ya puedo usarlo
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com