918博天堂

Server : Microsoft-IIS/10.0
System : Windows NT EBS-6136 10.0 build 17763 (Windows Server 2016) i586
User : jxgj ( 0)
PHP Version : 7.0.33
Disable Function : passthru,exec,system,shell_exec,proc_open,popen,pcntl_exec,socket_bind,stream_socket_server
Directory :  D:/tmp_aspnet/root/63ee1760/9e6b534b/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : D:/tmp_aspnet/root/63ee1760/9e6b534b/App_Web_l11rrck0.0.cs
?#pragma checksum "D:\wwwroot\ladderin\wwwroot\Include\ImgCode2.ashx" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "C088A984954690B86168EF8035679F0868AFFF77"

#line 1 "D:\wwwroot\ladderin\wwwroot\Include\ImgCode2.ashx"

using System;
using System.Web;
using System.Web.SessionState;
using System.Collections;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;

public class ImgCode2 : IHttpHandler, IRequiresSessionState
{
    
    public void ProcessRequest (HttpContext context) 
    {

        //色彩列表,用于验证码、噪线、噪点
        Color[] color = { Color.Black, Color.Red, Color.Blue, Color.Green, Color.Orange, Color.Brown, Color.DarkBlue };

        //字体列表,用于验证码
        string[] font = { "Times New Roman", "MS Mincho", "Book Antiqua", "Gungsuh", "PMingLiU", "Impact" };

        //验证码的字符集,去掉了一些容易混合的字符
        char[] character = {'1', '2', '3', '4', '5', '6','7', '8', '9'};
        char[] character2 = { '1', '2', '3', '4', '5', '6', '7', '8', '9'};
        char[] character3 = { '+', '-', 'X'};

        Random rnd = new Random();

        //天生验证码字符串
        int num1 = Convert.ToInt32(character[rnd.Next(character.Length)].ToString());
        int num2 = Convert.ToInt32(character2[rnd.Next(character2.Length)].ToString());
        string yunsuan = character3[rnd.Next(character3.Length)].ToString();
        int b = 0;
        int s = 0;
        if (num1 > num2)
        {
            b = num1;
            s = num2;
        }
        else
        {
            b = num2;
            s = num1;
        }
        int jieguo = 0;
        switch (yunsuan)
        {
            case "+":
                jieguo = b + s;
                break;
            case "-":
                jieguo = b - s;
                break;
            case "X":
                jieguo = b * s;
                break;
        }
        string chkCode =  b.ToString() + yunsuan + s.ToString() + "=?";
        Bitmap bmp = new Bitmap(100, 30);

        Graphics g = Graphics.FromImage(bmp);

        g.Clear(Color.White);

        ////画噪线
        //for (int i = 0; i < 2; i++)
        //{
        //    Color clr = color[rnd.Next(color.Length)];
        //    g.DrawLine(new Pen(clr), rnd.Next(bmp.Width), rnd.Next(bmp.Height), rnd.Next(bmp.Width), rnd.Next(bmp.Height));
        //}

        //画验证码字符串
        for (int i = 0; i < chkCode.Length; i++)
        {
            string fnt = font[rnd.Next(font.Length)];
            Font ft = new Font(fnt, 16);
            Color clr = color[rnd.Next(color.Length)];
            g.DrawString(chkCode[i].ToString(), ft, new SolidBrush(clr), (float)i * 16 + 15, (float)6);
        }

        //画噪点
        //for (int i = 0; i < 20; i++)
        //{
        //    int x = rnd.Next(bmp.Width);
        //    int y = rnd.Next(bmp.Height);
        //    Color clr = color[rnd.Next(color.Length)];
        //    bmp.SetPixel(x, y, clr);
        //}
        //断根该页输出缓存,设置该页无缓存
        context.Response.Buffer = true;
        context.Response.ExpiresAbsolute = System.DateTime.Now.AddMilliseconds(0);
        context.Response.Expires = 0;
        context.Response.CacheControl = "no-cache";
        context.Response.AppendHeader("Pragma", "No-Cache");

        //将验证码图片写入内存流,并将其以"image/Png" 体式输出
        MemoryStream ms = new MemoryStream();

        try
        {
            bmp.Save(ms, ImageFormat.Png);
            context.Response.ClearContent();
            context.Response.ContentType = "image/Png";
            context.Response.BinaryWrite(ms.ToArray());

            context.Session["imgcode"] = jieguo.ToString();
            
        }
        finally
        {
            //显式开释资源
            bmp.Dispose();
            g.Dispose();
        }
    }
 
    public bool IsReusable {
        get {
            return false;
        }
    }

}

#line default
#line hidden