Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 18594|Resposta: 1

[ASP.NET] asp.net o princípio e o código da geração de captcha de imagem

[Copiar link]
Publicado em 02/04/2015 10:26:51 | | |
usando o 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 imagem de classe parcial pública: System.Web.UI.Page
{
Proteção de Void Page_Load(remetente de objetos, EventArgs e)
{
Isso. CreateCheckCodeImage(RndNum());

}

string privada RndNum()
{
número int;
código de carcaça;
verificação de string = String.Empty;

System.Random random = novo Random();

para (int i = 0; Eu < 4; i++)
{
número = aleatório. Next();
if (número % 2 == 0)
código = (char)('0' + (char)(número % 10));
senão
código = (carácter)('A' + (carácter)(número % 26));
checkCode += código. ToString();
}
Response.Cookies.Add(novo HttpCookie("yzmcode", checkCode));
return checkCode;
}
void privado CreateCheckCodeImage(string checkCode)
{
if (checkCode == null || checkCode.Trim() == String.Empty)
retorno;
Imagem System.Drawing.Bitmap = novo System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
Gráficos g = Gráficos.FromImage(image);
tente
{
//生成随机生成器
Aleatório aleatório = novo Aleatório();
//清空图片背景色
g.Transparente (Cor. Branco);
//画图片的背景噪音线
para (int i = 0; Eu < 25; i++)
{
int x1 = aleatório. Próximo (imagem. Largura);
int x2 = aleatório. Próximo (imagem. Largura);
int y1 = aleatório. Próximo (imagem. altura);
int y2 = aleatório. Próximo (imagem. altura);
g.DrawLine(nova Caneta (Cor.Prata), x1, y1, x2, y2);
}

Font font = novo System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
Desenho.Desenho2D.GradienteLinearPincel = novo Sistema.Desenho.Desenho2D.GradienteLinearPincel(novo Retângulo(0, 0, imagem. Largura, imagem. Altura), Cor.Azul, Cor.Vermelho Escuro, 1,2f, verdadeiro);
g.DrawString(checkCode, fonte, pincel, 2, 2);
//画图片的前景噪音点
para (int i = 0; Eu < 100; i++)
{
int x = aleatório. Próximo (imagem. Largura);
int y = aleatório. Próximo (imagem. altura);
imagem. SetPixel(x, y, Color.FromArgb(random. Next()));
}
//画图片的边框线
g.DrawRectangle(nova Caneta(Color.Silver), 0, 0, imagem. Largura - 1, imagem. Altura - 1);
System.IO.MemoryStream ms = novo System.IO.MemoryStream();
imagem. Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
Resposta.ConteúdoClaro();
Resposta.ContentType = "imagem/Gif";
Response.BinaryWrite(ms. ToArray());
}
finalmente
{
g.Eliminar();
imagem. Descartar();
}
}

}
//验证码使用页login.aspx中的代码
<asp:ImageButton ID="yzm" runat="server" ImageUrl="imagecode.aspx" />
<asp:LinkButton ID="ChangeCode" runat="server" text="Não consegue ver claramente? Alterar o código de verificação" />
<asp:Button ID="Button1" runat="server" Text="Button" /></div>
//ogin.aspx.cs中的代码
Acrescentar
Você não precisa escrever código, clique em "Não consegue ver claramente?" Altere o código de verificação" para atualizar o código de verificação posteriormente
Empty protegido ChangeCode_Click(object sender, EventArgs e)
{
}
//提交按钮代码这里是通过cookies来验证的
Protected void Button1_Click(object sender, EventArgs e)
{
if (String.Compare(Request.Cookies["yzmcode"]. Valor, a.Texto, verdadeiro) != 0)
{
Response.Write("<scrip去掉t>alert('CAPTCHA error!')"</scrip去掉t>);
}
senão
{ Response.Write("<scrip去掉t>alert('Validate!!')</scrip去掉t>"; }
}




Anterior:IE elimina execução remota de comandos
Próximo:asp.net implementar cookies para salvar valores
Publicado em 04/04/2015 10:58:42 |
Já posso usar
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com