Rumah pembangunan bahagian belakang Tutorial C#.Net asp.net如何利用ashx生成图形验证码的实例

asp.net如何利用ashx生成图形验证码的实例

Jul 26, 2017 pm 03:29 PM
asp.net menjana

这篇文章主要介绍了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>
Salin selepas log masuk

这个代码看着就觉得写代码的人比较欠揍,代码写成这样子着实郁闷。验证吗也不写点script做下切换。

下面我介绍一种方式来实现这样的功能

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;
      }
    }
  }
}
Salin selepas log masuk

2. 在页面上显示验证码,因为我们生成的是图形,所以可以直接写在标签里,我们只要写段简单的脚本就可以点击鼠标切换验证码了


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

说了半天,该是时候看看生成的验证码长什么样了

Atas ialah kandungan terperinci asp.net如何利用ashx生成图形验证码的实例. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menjana tarikh rawak k antara dua tarikh menggunakan Python? Bagaimana untuk menjana tarikh rawak k antara dua tarikh menggunakan Python? Sep 09, 2023 pm 08:17 PM

Menjana data rawak adalah sangat penting dalam bidang sains data. Daripada membina ramalan rangkaian saraf, data pasaran saham, dsb., tarikh biasanya digunakan sebagai salah satu parameter. Kita mungkin perlu menjana nombor rawak antara dua tarikh untuk analisis statistik. Artikel ini akan menunjukkan cara menjana k tarikh rawak antara dua tarikh tertentu menggunakan modul rawak dan datetime ialah perpustakaan terbina dalam Python untuk mengendalikan masa. Sebaliknya, modul rawak membantu dalam menjana nombor rawak. Jadi kita boleh menggabungkan modul rawak dan masa tarikh untuk menjana tarikh rawak antara dua tarikh. Syntax random.randint (mula, tamat, k) rawak di sini merujuk kepada pustaka rawak Python. Kaedah randint menggunakan tiga perkara penting

Cara menjana kod pengesahan imej yang boleh dimuat semula menggunakan PHP Cara menjana kod pengesahan imej yang boleh dimuat semula menggunakan PHP Sep 13, 2023 am 11:54 AM

Cara menggunakan PHP untuk menjana kod pengesahan imej yang boleh dimuat semula Dengan pembangunan Internet, untuk mengelakkan serangan berniat jahat dan operasi mesin automatik, banyak tapak web menggunakan kod pengesahan untuk pengesahan pengguna. Satu jenis kod pengesahan yang biasa ialah kod pengesahan imej, yang menghasilkan gambar yang mengandungi aksara rawak dan memerlukan pengguna memasukkan aksara yang betul sebelum meneruskan. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menjana kod pengesahan imej yang boleh dimuat semula dan memberikan contoh kod khusus. Langkah 1: Buat imej kod pengesahan Mula-mula, kita perlu mencipta imej kod pengesahan

Bagaimana untuk melakukan penjanaan bahasa semula jadi asas menggunakan PHP Bagaimana untuk melakukan penjanaan bahasa semula jadi asas menggunakan PHP Jun 22, 2023 am 11:05 AM

Penjanaan bahasa semula jadi ialah teknologi kecerdasan buatan yang menukar data kepada teks bahasa semula jadi. Dalam era data besar hari ini, semakin banyak perniagaan perlu menggambarkan atau mempersembahkan data kepada pengguna, dan penjanaan bahasa semula jadi ialah kaedah yang sangat berkesan. PHP ialah bahasa skrip sebelah pelayan yang sangat popular yang boleh digunakan untuk membangunkan aplikasi web. Artikel ini akan memperkenalkan secara ringkas cara menggunakan PHP untuk penjanaan bahasa semula jadi asas. Memperkenalkan perpustakaan penjanaan bahasa semula jadi Pustaka fungsi yang disertakan dengan PHP tidak termasuk fungsi yang diperlukan untuk penjanaan bahasa semula jadi, jadi

Tidak lagi bimbang tentang dihentikan oleh bos anda untuk mesyuarat kecil sebelum berhenti kerja. Pembantu AI akan membantu anda menjana minit mesyuarat secara automatik. Tidak lagi bimbang tentang dihentikan oleh bos anda untuk mesyuarat kecil sebelum berhenti kerja. Pembantu AI akan membantu anda menjana minit mesyuarat secara automatik. Sep 04, 2023 pm 11:21 PM

iFlytek telah menaik taraf fungsi minit mesyuarat, yang boleh menukar secara langsung ungkapan pertuturan kepada draf bertulis, dan AI boleh meringkaskan minit mesyuarat berdasarkan rakaman. AI boleh membantu anda melengkapkan penulisan minit mesyuarat Pada 31 Ogos, versi web iFlytek telah dinaik taraf, menambah fungsi rakaman masa nyata pada bahagian PC, yang boleh menggunakan kecerdasan buatan untuk menjana minit mesyuarat secara bijak. Pelancaran fungsi ini akan meningkatkan kecekapan pengguna dalam menyusun kandungan dan membuat susulan ke atas item kerja utama selepas mesyuarat. Bagi orang yang sering menghadiri mesyuarat, fungsi ini sudah pasti alat yang sangat praktikal yang boleh menjimatkan banyak masa dan tenaga Senario aplikasi fungsi ini adalah terutamanya untuk menukar rakaman pada PC kepada teks dan menjana minit mesyuarat secara automatik, bertujuan untuk menyediakan. pengguna dengan kualiti terbaik Produk dengan perkhidmatan terbaik dan teknologi paling canggih untuk meningkatkan kecekapan pejabat dengan cepat

Hasilkan carta wafel menggunakan pyWaffle dalam Python Hasilkan carta wafel menggunakan pyWaffle dalam Python Aug 17, 2023 am 11:49 AM

Visualisasi data adalah penting untuk pemahaman dan pembentangan maklumat yang cekap. Di antara banyak jenis carta yang tersedia, carta wafel ialah cara baharu untuk memaparkan data dalam struktur seperti grid dengan jubin segi empat sama. Modul Python yang berkuasa PyWaffle memudahkan pembangunan carta wafel, serupa dengan banyak kaedah pengiraan dan analisis data. Dalam artikel ini, kita akan melihat cara membuat carta wafel menggunakan modul Python PyWaffle yang canggih. Mari pasang PyWafle dan lihat cara menggunakannya untuk menggambarkan data kategori. Jalankan arahan berikut dalam cmd anda untuk memasang perpustakaan dan kemudian mengimportnya ke dalam kod anda Terjemahan bahasa Cina bagi pipinstallpywaffleExample1 ialah: Contoh 1 Dalam contoh ini, kami

Bagaimana untuk menjana kod QR dengan had masa menggunakan PHP? Bagaimana untuk menjana kod QR dengan had masa menggunakan PHP? Aug 26, 2023 pm 04:34 PM

Bagaimana untuk menjana kod QR dengan had masa menggunakan PHP? Dengan populariti pembayaran mudah alih dan tiket elektronik, kod QR telah menjadi teknologi biasa. Dalam banyak senario, kami mungkin perlu menjana kod QR dengan had masa, yang akan menjadi tidak sah walaupun selepas tempoh masa tertentu. Artikel ini akan memperkenalkan cara menggunakan PHP untuk menjana kod QR terhad masa dan menyediakan contoh kod untuk rujukan. Memasang perpustakaan PHPQRCode Untuk menggunakan PHP untuk menjana kod QR, kita perlu memasang perpustakaan PHPQRCode terlebih dahulu. perpustakaan ini

Bagaimana untuk menjana buku jawapan yang salah untuk kuiz dalam talian Bagaimana untuk menjana buku jawapan yang salah untuk kuiz dalam talian Sep 25, 2023 am 10:24 AM

Bagaimana untuk menghasilkan buku ralat untuk menjawab soalan dalam talian Dalam era maklumat hari ini, menjawab soalan dalam talian telah menjadi tugas biasa bagi kebanyakan pelajar dan pendidik. Soalan yang salah selalu menjadi salah satu masalah dalam proses pembelajaran Ramai orang berharap dengan mudah menjana buku jawapan yang salah untuk jawapan dalam talian supaya mereka boleh menyemak dan menguasai ilmu dengan lebih baik. Artikel ini akan memperkenalkan cara merealisasikan fungsi penjanaan buku ralat jawapan dalam talian melalui pengaturcaraan, dan memberikan contoh kod khusus. Langkah 1: Bina antara muka web untuk menjana jawapan dalam talian dan buku kecil ralat Anda memerlukan antara muka web untuk memaparkan soalan dan jawapan. Boleh guna HTML

Perkara yang perlu dilakukan jika direktori perkataan dijana secara tidak betul Perkara yang perlu dilakukan jika direktori perkataan dijana secara tidak betul Feb 20, 2024 am 08:08 AM

Apa yang perlu dilakukan jika jadual kandungan perkataan dijana dengan tidak betul Dengan perkembangan teknologi, dokumen elektronik telah menjadi bahagian yang sangat diperlukan dalam kerja dan kajian harian kita. Apabila menyunting dokumen elektronik, terutamanya artikel atau kertas panjang, penjanaan jadual kandungan adalah langkah yang sangat penting. Jadual kandungan boleh memudahkan pembaca mencari kandungan dan struktur artikel dan meningkatkan kecekapan membaca. Walau bagaimanapun, kadangkala kami menghadapi beberapa masalah dalam proses penjanaan katalog, seperti ralat penjanaan katalog, susunan tidak teratur, dsb. Jadi, jika direktori perkataan dijana secara tidak betul, bagaimanakah kita harus menyelesaikannya? kepala

See all articles