激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - asp.net mvc驗證碼類使用

asp.net mvc驗證碼類使用

2020-04-15 13:33阿炬 ASP.NET教程

這篇文章主要為大家詳細介紹了asp.net mvc驗證碼類使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

驗證碼類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
namespace QJW.VerifyCode
{
  //用法:
  //public FileContentResult CreateValidate()
  //{
  //  ValidateCode vCode = new ValidateCode();
  //  string code = vCode.CreateValidateCode(5);
  //  Session["ValidateCode"] = code;
  //  byte[] bytes = vCode.CreateValidateGraphic(code);
  //  return File(bytes, "image/JPEG");
  //}
 
 
  public class ValidateCode
  {
    public ValidateCode()
    {
    }
    /// <summary>
    /// 驗證碼的最大長度
    /// </summary>
    public int MaxLength
    {
      get { return 10; }
    }
    /// <summary>
    /// 驗證碼的最小長度
    /// </summary>
    public int MinLength
    {
      get { return 1; }
    }
    /// <summary>
    /// 生成驗證碼
    /// </summary>
    /// <param name="length">指定驗證碼的長度</param>
    /// <returns></returns>
    public string CreateValidateCode(int length)
    {
      int[] randMembers = new int[length];
      int[] validateNums = new int[length];
      string validateNumberStr = "";
      //生成起始序列值
      int seekSeek = unchecked((int)DateTime.Now.Ticks);
      Random seekRand = new Random(seekSeek);
      int beginSeek = (int)seekRand.Next(0, Int32.MaxValue - length * 10000);
      int[] seeks = new int[length];
      for (int i = 0; i < length; i++)
      {
        beginSeek += 10000;
        seeks[i] = beginSeek;
      }
      //生成隨機數字
      for (int i = 0; i < length; i++)
      {
        Random rand = new Random(seeks[i]);
        int pownum = 1 * (int)Math.Pow(10, length);
        randMembers[i] = rand.Next(pownum, Int32.MaxValue);
      }
      //抽取隨機數字
      for (int i = 0; i < length; i++)
      {
        string numStr = randMembers[i].ToString();
        int numLength = numStr.Length;
        Random rand = new Random();
        int numPosition = rand.Next(0, numLength - 1);
        validateNums[i] = Int32.Parse(numStr.Substring(numPosition, 1));
      }
      //生成驗證碼
      for (int i = 0; i < length; i++)
      {
        validateNumberStr += validateNums[i].ToString();
      }
      return validateNumberStr;
    }
    /// <summary>
    /// 創建驗證碼的圖片
    /// </summary>
    /// <param name="containsPage">要輸出到的page對象</param>
    /// <param name="validateNum">驗證碼</param>
    public byte[] CreateValidateGraphic(string validateCode)
    {
      Bitmap image = new Bitmap((int)Math.Ceiling(validateCode.Length * 12.0), 22);
      Graphics g = Graphics.FromImage(image);
      try
      {
        //生成隨機生成器
        Random random = new Random();
        //清空圖片背景色
        g.Clear(Color.White);
        //畫圖片的干擾線
        for (int 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 Font("Arial", 12, (FontStyle.Bold | FontStyle.Italic));
        LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height),
         Color.Blue, Color.DarkRed, 1.2f, true);
        g.DrawString(validateCode, font, brush, 3, 2);
        //畫圖片的前景干擾點
        for (int i = 0; i < 100; i++)
        {
          int x = random.Next(image.Width);
          int y = random.Next(image.Height);
          image.SetPixel(x, y, Color.FromArgb(random.Next()));
        }
        //畫圖片的邊框線
        g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
        //保存圖片數據
        MemoryStream stream = new MemoryStream();
        image.Save(stream, ImageFormat.Jpeg);
        //輸出圖片流
        return stream.ToArray();
      }
      finally
      {
        g.Dispose();
        image.Dispose();
      }
    }
    /// <summary>
    /// 得到驗證碼圖片的長度
    /// </summary>
    /// <param name="validateNumLength">驗證碼的長度</param>
    /// <returns></returns>
    public static int GetImageWidth(int validateNumLength)
    {
      return (int)(validateNumLength * 12.0);
    }
    /// <summary>
    /// 得到驗證碼的高度
    /// </summary>
    /// <returns></returns>
    public static double GetImageHeight()
    {
      return 22.5;
    }
  }
}

使用方法

?
1
2
3
4
5
6
7
8
9
public FileContentResult CreateValidate()
{
  ValidateCode vCode = new ValidateCode();
  string code = vCode.CreateValidateCode(5);
  Session["ValidateCode"] = code;
  byte[] bytes = vCode.CreateValidateGraphic(code);
 
  return File(bytes, "image/JPEG");
}

HTML
<a href="javascript:;" onclick="reloadcode();"><img id="safecode" src="/common/CreateValidate" js" id="highlighter_38657">

?
1
2
3
4
function reloadcode() {
    var verify = document.getElementById('safecode');
    verify.setAttribute('src', '/common/CreateValidate?' + Math.random());
  }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

  • 驗證碼
  • MVC
  • asp.net
  • 延伸 · 閱讀

    精彩推薦
    主站蜘蛛池模板: 成人福利免费在线观看 | 国产毛片在线高清视频 | 91成人天堂久久成人 | 成人aaaa免费全部观看 | 国产高潮失禁喷水爽到抽搐视频 | 男男啪羞羞视频网站 | 成年人在线视频 | 国产 视频 一区二区 | 午夜精品久久久久久中宇 | 免费毛片播放 | 日韩视频二区 | 久久久久二区 | 高清一区二区在线观看 | 国产在线观看福利 | 草久在线观看视频 | www69xxxxx| 成人免费福利视频 | 爱高潮www亚洲精品 chengrenzaixian | 91精品国产一区二区三区动漫 | 一级毛片免费一级 | 国产人成精品综合欧美成人 | 越南一级黄色片 | 欧美四级在线观看 | 污在线观看网站 | 护士hd老师fre0性xxx | 亚洲天堂在线电影 | 免费观看一区二区三区视频 | 午夜在线视频一区二区三区 | 羞羞答答tv | 国产高清一区 | 欧美性a视频 | 悠悠成人资源亚洲一区二区 | 久久国产精品无码网站 | 成人在线视频免费看 | 久久精品日韩一区 | 毛片大全 | 一区二区三区欧美在线观看 | 日韩欧美激情视频 | 九九热视频免费观看 | 国产精品久久久久久久久久三级 | 成熟女人特级毛片www免费 |