主頁(yè) > 知識(shí)庫(kù) > asp.net生成驗(yàn)證碼代碼(純中文)

asp.net生成驗(yàn)證碼代碼(純中文)

熱門(mén)標(biāo)簽:團(tuán)購(gòu)網(wǎng)站 科大訊飛語(yǔ)音識(shí)別系統(tǒng) Linux服務(wù)器 阿里云 電子圍欄 服務(wù)器配置 銀行業(yè)務(wù) Mysql連接數(shù)設(shè)置
復(fù)制代碼 代碼如下:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Text; //添加引用
using System.Drawing; //添加引用
/// summary>
/// CheckCode_Ch 的摘要說(shuō)明
/// /summary>
public class CheckCode_Ch
{
public CheckCode_Ch()
{
//
// TODO: 在此處添加構(gòu)造函數(shù)邏輯
//
}
private static object[] CreateString()
{
//定義一個(gè)數(shù)組存儲(chǔ)漢字編碼的組成元素
string[] str = new string[16] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" };
Random ran = new Random(); //定義一個(gè)隨機(jī)數(shù)對(duì)象
object[] bytes = new object[4];
for (int i = 0; i 4; i++)
{
//獲取區(qū)位碼第一位
int ran1 = ran.Next(11, 14);
string str1 = str[ran1].Trim();
//獲取區(qū)位碼第二位并防止數(shù)據(jù)重復(fù)
ran = new Random(ran1 * unchecked((int)DateTime.Now.Ticks) + i);
int ran2;
if (ran1 == 13)
{
ran2 = ran.Next(0, 7);
}
else
{
ran2 = ran.Next(0, 16);
}
string str2 = str[ran2].Trim();
//獲取區(qū)位碼第三位
ran = new Random(ran2 * unchecked((int)DateTime.Now.Ticks) + i);
int ran3 = ran.Next(10, 16);
string str3 = str[ran3].Trim();
//獲取區(qū)位碼第四位
ran = new Random(ran3 * unchecked((int)DateTime.Now.Ticks) + i);
int ran4;
if (ran3 == 10)
{
ran4 = ran.Next(1, 16);
}
else if (ran3 == 15)
{
ran4 = ran.Next(0, 15);
}
else
{
ran4 = ran.Next(0, 16);
}
string str4 = str[ran4].Trim();
//定義字節(jié)變量存儲(chǔ)產(chǎn)生的隨機(jī)漢字區(qū)位碼
byte byte1 = Convert.ToByte(str1 + str2, 16);
byte byte2 = Convert.ToByte(str3 + str4, 16);
byte[] stradd = new byte[] { byte1, byte2 };
//將產(chǎn)生的漢字字節(jié)放入數(shù)組
bytes.SetValue(stradd, i);
}
return bytes;
}
private static string GetString()
{
Encoding gb = Encoding.GetEncoding("gb2312");
object[] bytes = CreateString();
//根據(jù)漢字字節(jié)解碼出中文漢字
string str1 = gb.GetString((byte[])Convert.ChangeType(bytes[0], typeof(byte[])));
string str2 = gb.GetString((byte[])Convert.ChangeType(bytes[1], typeof(byte[])));
string str3 = gb.GetString((byte[])Convert.ChangeType(bytes[2], typeof(byte[])));
string str4 = gb.GetString((byte[])Convert.ChangeType(bytes[3], typeof(byte[])));
string str = str1 + str2 + str3 + str4;
HttpContext.Current.Response.Cookies.Add(new HttpCookie("CheckCode", str));
return str;
}
public static void GraphicsImage()
{
System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((GetString().Length * 22.5)), 22);
Graphics g = Graphics.FromImage(image); //創(chuàng)建畫(huà)布
try
{
//生成隨機(jī)生成器
Random random = new Random();
//清空?qǐng)D片背景色
g.Clear(Color.White);
//畫(huà)圖片的背景噪音線(xiàn)
for (int i = 0; i 1; 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.Black), x1, y1, x2, y2);
}
Font font = new System.Drawing.Font("Couriew New", 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(GetString(), font, brush, 2, 2);
//畫(huà)圖片的前景噪音點(diǎn)
for (int i = 0; i 50; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
//畫(huà)圖片的邊框線(xiàn)
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);
HttpContext.Current.Response.ClearContent();
HttpContext.Current.Response.ContentType = "image/Gif";
HttpContext.Current.Response.BinaryWrite(ms.ToArray());
}
catch (Exception ms)
{
HttpContext.Current.Response.Write(ms.Message);
}
}
}

第二步建立一個(gè)頁(yè)面引用類(lèi)庫(kù)ChineseCheckCode.aspx前臺(tái)不用寫(xiě)代碼,后臺(tái)引用類(lèi)庫(kù)。。
復(fù)制代碼 代碼如下:

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
public partial class UserValidator_ChineseCheckCode : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
CheckCode_Ch.GraphicsImage(); //調(diào)用方法生成四位漢字驗(yàn)證碼
}
}

第三步引用驗(yàn)證碼頁(yè)
復(fù)制代碼 代碼如下:

asp:TextBox ID="Validator" runat="server" Width="150px" >/asp:TextBox>
img id="Img1" alt="看不清,請(qǐng)點(diǎn)擊我!" onclick="this.src=this.src+'?'" src="ChineseCheckCode.aspx"
style="width: 75px; height: 24px" align="left" />
asp:ImageButton ID="imgBtnLogin" runat="server" ImageUrl="~/Images/Login.GIF"
OnClick="imgBtnLogin_Click" />

后臺(tái)判斷
復(fù)制代碼 代碼如下:

protected void imgBtnLogin_Click(object sender, ImageClickEventArgs e)
{
HttpCookie cookie = Request.Cookies["CheckCode"];
if (cookie.Value == this.Validator.Text.Trim())
{
//。。。
}
else
{
Response.Write("script>alert('驗(yàn)證碼輸入錯(cuò)誤,請(qǐng)重新輸入!');Location='ChineseCodeValidator.aspx'/script>");
return;
}
}

以上驗(yàn)證碼生成四位,請(qǐng)各位根據(jù) 情況做適當(dāng)修改。
現(xiàn)在總結(jié)了生成純數(shù)字、數(shù)字字母混合、純漢字的驗(yàn)證碼技術(shù)。希望對(duì)各位有所幫助。。
您可能感興趣的文章:
  • asp.net(C#) 生成隨機(jī)驗(yàn)證碼的代碼
  • ASP.net 驗(yàn)證碼實(shí)現(xiàn)代碼(C#)
  • Asp.net(C#)實(shí)現(xiàn)驗(yàn)證碼功能代碼
  • asp.net 簡(jiǎn)單驗(yàn)證碼驗(yàn)證實(shí)現(xiàn)代碼
  • asp.net 驗(yàn)證碼生成和刷新及驗(yàn)證
  • asp.net下生成英文字符數(shù)字驗(yàn)證碼的代碼
  • ASP.NET中的無(wú)刷新驗(yàn)證碼的開(kāi)發(fā)(完整代碼)
  • 封裝的一個(gè)asp.net驗(yàn)證碼類(lèi)
  • asp.net ajax實(shí)現(xiàn)無(wú)刷新驗(yàn)證碼
  • asp.net 驗(yàn)證碼的簡(jiǎn)單制作(vb.net+C#)
  • asp.net 圖片驗(yàn)證碼的HtmlHelper
  • asp.net生成驗(yàn)證碼(純數(shù)字)
  • asp.net中3種驗(yàn)證碼示例(實(shí)現(xiàn)代碼)(數(shù)字,數(shù)字字母混和,漢字)
  • ASP.NET MVC驗(yàn)證碼功能實(shí)現(xiàn)代碼
  • ASP.NET 實(shí)現(xiàn)驗(yàn)證碼以及刷新驗(yàn)證碼的小例子
  • asp.net驗(yàn)證碼圖片生成示例
  • ASP.NET驗(yàn)證碼(3種)
  • 12306動(dòng)態(tài)驗(yàn)證碼啟發(fā)之ASP.NET實(shí)現(xiàn)動(dòng)態(tài)GIF驗(yàn)證碼(附源碼)
  • asp.net驗(yàn)證碼的簡(jiǎn)單制作
  • ASP.NET驗(yàn)證碼實(shí)現(xiàn)(附源碼)

標(biāo)簽:衢州 萍鄉(xiāng) 棗莊 大理 衡水 蚌埠 江蘇 廣元

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《asp.net生成驗(yàn)證碼代碼(純中文)》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話(huà)咨詢(xún)

    • 400-1100-266