백엔드 개발 C#.Net 튜토리얼 ashx를 사용하여 그래픽 확인 코드를 생성하는 예제 튜토리얼

ashx를 사용하여 그래픽 확인 코드를 생성하는 예제 튜토리얼

Aug 06, 2017 am 11:35 AM
제도법 확인하다

이 글에서는 asp.net에서 ashx를 사용하여 그래픽 인증 코드를 생성하는 방법을 주로 소개하며, 필요한 친구들이 참고할 수 있는 그래픽 인증 코드를 생성하기 위한 asp.net의 단계, 구현 방법 및 관련 주의 사항을 분석합니다. 이 기사

이 예에서는 asp.net이 ashx를 사용하여 그래픽 확인 코드를 생성하는 방법을 설명합니다. 참고하실 수 있도록 공유해 드리며, 자세한 내용은 다음과 같습니다.

인증코드의 장점은 굳이 설명하지 않아도 다들 아실 텐데요. 인터넷에서 누군가가 aspx 페이지에 직접 인증 코드를 작성한 것을 보았는데, 이는 이러한 방식으로 인증 코드를 요청하는 것이 페이지를 요청하는 것과 동일하다는 것을 의미합니다. 아래와 같이


<form id="form1" runat="server">
  <p>
    <asp:Image ID="Image1" runat="server" ImageUrl="Default.aspx" />
    <br />
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
  </p>
</form>
로그인 후 복사

이 코드를 보면 코드를 작성한 사람이 벌을 받아야 한다는 느낌이 듭니다. 확인을 위해 일부 스크립트를 작성하지 마십시오.

이제 그러한 기능을 구현하는 방법을 소개하겠습니다

1. ashx를 작성하여 그래픽 인증 코드를 생성합니다


using System;
using System.Collections;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Web.SessionState;
using System.Drawing;
namespace usechecknum.ashx
{
  /// <summary>
  /// $codebehindclassname$ 的摘要说明
  /// </summary>
  [WebService(Namespace = "http://tempuri.org/")]
  [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
  public class doCreateNum : IHttpHandler,IRequiresSessionState
  {
    public void ProcessRequest(HttpContext context)
    {
      context.Response.ContentType = "text/html";
      string checkCode = GetValidation(5); // 产生5位随机验证码字符
      context.Session["Code"] = checkCode; //将字符串保存到Session中,以便需要时进行验证
      System.Drawing.Bitmap image = new System.Drawing.Bitmap(70, 22);
      Graphics g = Graphics.FromImage(image);
      try
      {
        //生成随机生成器
        Random random = new Random();
        //清空图片背景色
        g.Clear(Color.White);
        // 画图片的背景噪音线
        int i;
        for (i = 0; i < 25; i++)
        {
          int x1 = random.Next(image.Width);
          int x2 = random.Next(image.Width);
          int y1 = random.Next(image.Height);
          int y2 = random.Next(image.Height);
          g.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2);
        }
        Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold));
        System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2F, true);
        g.DrawString(checkCode, font, brush, 2, 2);
        //画图片的前景噪音点
        g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
        context.Response.ClearContent();
        context.Response.ContentType = "image/Gif";
        context.Response.BinaryWrite(ms.ToArray());
      }
      finally
      {
        g.Dispose();
        image.Dispose();
      }
    }
    public string GetValidation(int num)
    {
      string str = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //"或者写汉字也行"
      string validatecode = "";
      Random rd = new Random();
      for (int i = 0; i < num; i++)
      {
        validatecode += str.Substring(rd.Next(0, str.Length), 1);
      }
      return validatecode;
    }
    public bool IsReusable
    {
      get
      {
        return false;
      }
    }
  }
}
로그인 후 복사

2. 그래픽을 생성하므로 페이지에 인증 코드를 표시합니다. <img/> 태그에 간단한 스크립트만 작성하면 마우스 클릭만으로 인증코드가 전환됩니다


&lt;%@ Page Language=&quot;C#&quot; AutoEventWireup=&quot;true&quot; CodeBehind=&quot;index.aspx.cs&quot; Inherits=&quot;usechecknum._Default&quot; %&gt;
&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; &gt;
&lt;head runat=&quot;server&quot;&gt;
  &lt;title&gt;验证码的使用&lt;/title&gt;
&lt;/head&gt;
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot;&gt;
  function changeCode() {
    var imgNode = document.getElementById(&quot;vimg&quot;);
    imgNode.src = &quot;ashx/doCreateNum.ashx?t=&quot; + (new Date()).valueOf(); // 这里加个时间的参数是为了防止浏览器缓存的问题
  }
  &lt;/script&gt;
&lt;body&gt;
  &lt;form id=&quot;form1&quot; runat=&quot;server&quot;&gt;
   请输入验证码:&lt;input type=&quot;text&quot; name=&quot;checknum&quot;/&gt;&lt;img src=&quot;ashx/doCreateNum.ashx&quot; id=&quot;vimg&quot; onclick=&quot;changeCode()&quot; /&gt;
  &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;
로그인 후 복사

오랜 시간 이야기를 나눈 후, 생성된 인증 코드는 다음과 같습니다

위 내용은 ashx를 사용하여 그래픽 확인 코드를 생성하는 예제 튜토리얼의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

뜨거운 기사 태그

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PDF에서 서명을 확인하는 방법 PDF에서 서명을 확인하는 방법 Feb 18, 2024 pm 05:33 PM

PDF에서 서명을 확인하는 방법

WeChat 친구 지원 인증으로 차단을 해제하는 자세한 방법 WeChat 친구 지원 인증으로 차단을 해제하는 자세한 방법 Mar 25, 2024 pm 01:26 PM

WeChat 친구 지원 인증으로 차단을 해제하는 자세한 방법

정규식을 사용하여 IFSC 코드를 검증하는 방법은 무엇입니까? 정규식을 사용하여 IFSC 코드를 검증하는 방법은 무엇입니까? Aug 26, 2023 pm 10:17 PM

정규식을 사용하여 IFSC 코드를 검증하는 방법은 무엇입니까?

PHP 8의 새로운 기능: 확인 및 서명 추가 PHP 8의 새로운 기능: 확인 및 서명 추가 Mar 27, 2024 am 08:21 AM

PHP 8의 새로운 기능: 확인 및 서명 추가

golang에서 입력이 전자 문자인지 확인하는 방법 golang에서 입력이 전자 문자인지 확인하는 방법 Jun 25, 2023 pm 02:03 PM

golang에서 입력이 전자 문자인지 확인하는 방법

golang에서 입력이 대문자인지 확인하는 방법 golang에서 입력이 대문자인지 확인하는 방법 Jun 24, 2023 am 09:06 AM

golang에서 입력이 대문자인지 확인하는 방법

모바일 토큰 인증에서 스팀 로그인이 멈추는 문제를 해결하는 방법은 무엇입니까? 모바일 토큰 인증에서 스팀 로그인이 멈추는 문제를 해결하는 방법은 무엇입니까? Mar 14, 2024 pm 07:35 PM

모바일 토큰 인증에서 스팀 로그인이 멈추는 문제를 해결하는 방법은 무엇입니까?

golang에서 입력이 모두 한자인지 확인하는 방법 golang에서 입력이 모두 한자인지 확인하는 방법 Jun 24, 2023 am 09:16 AM

golang에서 입력이 모두 한자인지 확인하는 방법

See all articles