验证码三种实现方式

来源:互联网 发布:csdn设备运维算法 编辑:程序博客网 时间:2024/06/06 02:45

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();   //输出到客户端
        }
    }
}

 

 

 

 

 

 

原创粉丝点击