驗證碼三種實現方式

1.   點擊圖片驗證碼刷新

 

 

<img id="safecode" src="code.aspx" alt="看不清點擊刷新" onclick="ReloadCode()" />

 

function
 ReloadCode()
{
var checkcode = document.getElementById("safecode");
checkcode.src = "CheckCode.aspx" ;
}

 

2.   點擊鏈接驗證碼刷新

 

<img id="safecode" alt="" src="Code.aspx" />

<a href="javascript:reloadcode();" title="更換一張驗證碼圖片">看不清,請換一張</a>

 

<script type="text/javascript">
        function reloadcode() {
            document.getElementById('safecode').src = 'code.aspx?' + Math.random();
        }
    </script>

 

 

驗證碼生成頁面

 

code.aspx

 

 

namespace GuoNeng.Vide.Web
{
    public partial class Code : System.Web.UI.Page
    {

        protected void Page_Load(object sender, EventArgs e)
        {
            BuildCode();
        }

        private void BuildCode()
        {

            Color[] strcolor = { Color.Red, Color.Blue, Color.Brown, Color.Black, Color.Tomato };

            string[] strfont = { "華文中宋" };
            Random rands = new Random();
            Bitmap images = new Bitmap(80, 26);  //圖片大小
            Graphics g = Graphics.FromImage(images);
            Font f = new Font(strfont[0], 20); //字體大小

            //筆刷填充色
            Brush b = new SolidBrush(Color.Tomato);
            Brush b2 = new SolidBrush(strcolor[rands.Next(0, strcolor.Length)]);
            Brush b3 = new SolidBrush(Color.Red);
            Brush b4 = new SolidBrush(Color.FromArgb(128, Color.Green));
            g.Clear(Color.Wheat);

            //線條顏色
            Pen p = new Pen(Color.Red, 0);
            Pen p2 = new Pen(Color.Turquoise, 0);
            Random rand = new Random();
            for (int i = 0; i < 40; i++)
            {
                int y = rand.Next(images.Height);
                int x = rand.Next(images.Width);
                //g.DrawLine(p, 0, y, images.Width, y);
                g.DrawRectangle(p2, x, y, 1, 1);
            }


            g.DrawRectangle(p, 0, 0, images.Width - 1, images.Height - 1); //繪圖區域
            string strCode = rand.Next(1000, 10000).ToString();
            Session["yanzhencode"] = strCode;
            g.DrawString(strCode.Substring(0, 1), f, b, 2, -1);
            g.DrawString(strCode.Substring(1, 1), f, b2, 19, -1);
            g.DrawString(strCode.Substring(2, 1), f, b3, 37, -1);
            g.DrawString(strCode.Substring(3, 1), f, b4, 50, -1);
            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            images.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
            Response.ClearContent();
            Response.ContentType = "image/jpeg";
            Response.BinaryWrite(ms.ToArray());
            //Response.Cookies.Add(new HttpCookie("chne", "6780"));
            g.Dispose();
            images.Dispose();
        }

        private void ShuImg()
        {
            Response.ContentType = "image/*"; //設置發送頭爲圖像數據
            Response.Clear();   //清空發送數據
            Random rand = new Random();
            Stream stream = OpenFile(Server.MapPath("pic/" + rand.Next(1, 6).ToString() + ".jpg"));  //打開文件流
            Bitmap bit = new Bitmap(stream);
            bit.Save(Response.OutputStream, System.Drawing.Imaging.ImageFormat.Jpeg);//保存到輸出流中
            stream.Close();
            bit.Dispose();
            Response.Flush();   //輸出到客戶端
        }
    }
}

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章