当前位置: 移动技术网 > IT编程>开发语言>.net > ValidNumber.ashx验证码

ValidNumber.ashx验证码

2019年04月19日  | 移动技术网IT编程  | 我要评论

工作压力大的表现,婚假申请书,一叶障目打一字

validnumber.ashx 代码:

<%@ webhandler language="c#" class="validnumber" %>

using system;
using system.web;
using system.web.sessionstate; //第一步:导入此命名空间
public class validnumber : ihttphandler, irequiressessionstate
{

    public void processrequest(httpcontext context)
    {
        //种子
        string[] strlist = new[]
        {
            "a","b","c","d","1","2","3","4","5","6","7","8","9","0","q","w","e","r","t","y","u","i","o","p","z","x","n","v","w","q","b","a","d","d","f","g","h","j","k","l"
        };

        //生成随机数
        string[] list = new string[4];
        random rd = new random(datetime.now.millisecond * 100000);
        for (int i = 0; i < 4; i++)
        {
            list[i] = strlist[rd.next(strlist.length)];
            system.threading.thread.sleep(5);
        }

        system.text.stringbuilder sb = new system.text.stringbuilder();
        for (int i = 0; i < 4; i++)
        {
            sb = sb.append(list[i]);
        }
        httpcontext.current.session["validnumber"] = sb;
        //创建一张图片
        system.drawing.bitmap image = new system.drawing.bitmap(list.length * 15, 40);
        //创建画布
        system.drawing.graphics g = system.drawing.graphics.fromimage(image);
        //清空背景色,并添充成白色
        g.clear(system.drawing.color.white);

        //噪声线
        for (int i = 0; i < 20; i++)
        {
            random rds = new random();

            float x1 = rds.next(image.width - 1);
            float x2 = rds.next(image.width - 1);
            float y1 = rds.next(image.height - 1);
            float y2 = rds.next(image.height - 1);
            system.threading.thread.sleep(5);
            g.drawline(new system.drawing.pen(system.drawing.color.silver), x1, y1, x2, y2);
        }
        system.drawing.font f = new system.drawing.font("黑体", 25, system.drawing.graphicsunit.pixel);
        system.drawing.brush bs = new system.drawing.solidbrush(system.drawing.color.red);

        g.drawstring(sb.tostring(), f, bs, 5, 5);
        //当前请求输出的类型
        httpcontext.current.response.contenttype = "image/jpeg";
        //保存到输出流
        image.save(httpcontext.current.response.outputstream, system.drawing.imaging.imageformat.jpeg);

        g.dispose();
        image.dispose();

    }

    public bool isreusable
    {
        get
        {
            return false;
        }
    }

}

页面调用时 <img src="validnumber.ashx" alt="图片验证码" /> 但是回发session值改变页面图片没变,暂无比较理想的解决办法,提交时后台用  response.write("<script> window.location.href=window.location.href</script>")  刷新下页面。欢迎指教,有没有好点的用法。

 


摘自 bql_email的专栏

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网