• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿(mǎn)街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            asp.net(c#)中文驗(yàn)證碼程序

            來(lái)源:http://www.sosuo8.com/article/show.asp?id=816

            天在同學(xué)的書(shū)上看到的,跟大家分享下,

            效果:

            先建一個(gè)checkcode.aspx.

            進(jìn)入checkcode.aspx.cs

            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;  //添加引用

            public partial class _Default : System.Web.UI.Page 
            {
                
            protected void Page_Load(object sender, EventArgs e)
                
            {
                    GraphicsImage(
            4);  //調(diào)用方法生成四位漢字驗(yàn)證碼
                }


                
            private object[] CreateString(int strlength)
                
            {
                    
            //定義一個(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[strlength];
                    
            for (int i = 0; i < strlength; i++)
                    
            {
                        
            //獲取區(qū)位碼第一位
                        int ran1 = ran.Next(1114);
                        
            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(07);
                        }

                        
            else
                        
            {
                            ran2 
            = ran.Next(016);
                        }

                        
            string str2 = str[ran2].Trim();

                        
            //獲取區(qū)位碼第三位
                        ran = new Random(ran2 * unchecked((int)DateTime.Now.Ticks) + i);
                        
            int ran3 = ran.Next(1016);
                        
            string str3 = str[ran3].Trim();

                        
            //獲取區(qū)位碼第四位
                        ran = new Random(ran3 * unchecked((int)DateTime.Now.Ticks) + i);
                        
            int ran4;
                        
            if (ran3 == 10)
                        
            {
                            ran4 
            = ran.Next(116);
                        }

                        
            else if (ran3 == 15)
                        
            {
                            ran4 
            = ran.Next(015);
                        }

                        
            else
                        
            {
                            ran4 
            = ran.Next(016);
                        }

                        
            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 string GetString(int length)
                
            {
                    Encoding gb 
            = Encoding.GetEncoding("gb2312");
                    
            object[] bytes = CreateString(length);

                    
            //根據(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;
                    Response.Cookies.Add(
            new HttpCookie("CheckCode", str));
                    
            return str;
                }


                
            private void GraphicsImage(int length)
                
            {
                    System.Drawing.Bitmap image 
            = new System.Drawing.Bitmap((int)Math.Ceiling((GetString(length).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(00, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2ftrue);
                        g.DrawString(GetString(length), font, brush, 
            22);

                        
            //畫(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), 00, image.Width - 1, image.Height - 1);
                        System.IO.MemoryStream ms 
            = new System.IO.MemoryStream();
                        image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
                        Response.ClearContent();
                        Response.ContentType 
            = "image/Gif";
                        Response.BinaryWrite(ms.ToArray());
                    }

                    
            catch (Exception ms)
                    
            {
                        Response.Write(ms.Message);
                    }


                }

            }


             

            有耐心的就看完,沒(méi)耐心的就直接復(fù)制吧!

            注意里面的一句:
            Response.Cookies.Add(new HttpCookie("CheckCode", str));

            是用Cookies保存的不是用Session大家注意點(diǎn).

            新建一個(gè)defaulta.aspx,

            代碼主要是

            <asp:TextBox ID="TextBox3" runat="server" Font-Size="9pt" Width="65px"></asp:TextBox>
            <asp:Image ID="Image1" src="CheckCode.aspx" runat="server" Height="21px" Width="85px" />
            <asp:Button ID="Button1" runat="server" Font-Size="9pt" Text="確定" OnClick="Button1_Click" />


            注意上面只是貼出主要代碼,只是一個(gè)文本框,一個(gè)驗(yàn)證碼圖片,一個(gè)確定按鈕.

            進(jìn)入default.aspx.cs

             

            protected void Button1_Click(object sender, EventArgs e)
                
            {
                    HttpCookie cookie 
            = Request.Cookies["CheckCode"];
                    
            if (cookie.Value == this.TextBox3.Text.Trim())
                    
            {
                        Response.Write(
            "<script>alert(‘驗(yàn)證碼正確!‘)</script>");
                    }

                    
            else
                    
            {
                        Response.Write(
            "<script>alert(‘驗(yàn)證碼錯(cuò)誤!‘)</script>");
                    }

                }


            自己看看!!!

            源碼下載:CnCheckCode.rar

            posted on 2007-08-31 11:34 楊粼波 閱讀(635) 評(píng)論(0)  編輯 收藏 引用


            只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            大伊人青草狠狠久久| 国产Av激情久久无码天堂| 狠狠色丁香久久综合婷婷| 久久免费看黄a级毛片| 一极黄色视频久久网站| 亚洲人成无码www久久久| 青青久久精品国产免费看| 久久亚洲av无码精品浪潮| 久久精品国产99久久久香蕉| 99久久久久| 久久强奷乱码老熟女网站| 久久影视国产亚洲| 久久久噜噜噜久久中文字幕色伊伊 | 久久综合噜噜激激的五月天| 久久久久国产精品人妻| 久久男人Av资源网站无码软件| 久久午夜伦鲁片免费无码| 国产精品久久久久久一区二区三区| 精品国产91久久久久久久| 青青青伊人色综合久久| 国产成人香蕉久久久久| 久久久久久无码国产精品中文字幕 | 亚洲国产成人久久综合一| 国产精品日韩深夜福利久久 | 精品久久久久久久久免费影院 | 久久天天躁狠狠躁夜夜avapp| 欧美日韩精品久久免费| 国产精品久久久久天天影视| 久久婷婷五月综合97色直播| 欧美精品国产综合久久| 欧美久久综合性欧美| 久久天天躁狠狠躁夜夜躁2014| 精品乱码久久久久久久| 久久亚洲国产精品123区| 日产精品久久久久久久| 精品综合久久久久久88小说 | 亚洲欧美一区二区三区久久| 久久综合国产乱子伦精品免费| 国内精品久久久久影院网站| 久久久久波多野结衣高潮| 99久久亚洲综合精品成人|