zoukankan      html  css  js  c++  java
  • 网站注册随机码的实现


    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    namespace mbord2
    {
    /// <summary>
    /// image 的摘要说明。
    /// </summary>
    public class image : System.Web.UI.Page
    {
    private void Page_Load(object sender, System.EventArgs e)
      {
    // 在此处放置用户代码以初始化页面
    this.CreateCheckCodeImage(GenerateCheckCode());
      }
    //产生随机数的函数
    private string GenerateCheckCode()
      {
    int number;
    char code;
    //空字符串且为只读属性
    string checkCode = String.Empty;
    //新建一个随机数产生器
       System.Random random = new Random();
    for(int i=0; i<5; i++)
       {   //随机产生一个整数
        number = random.Next();
    //如果随机数是偶数 取余
    if(number % 2 == 0)
         code = (char)('0' + (char)(number % 10));
    else
    //如果随机数是奇数 选择从[A-Z]
         code = (char)('A' + (char)(number % 26));
    //5个字符的组合
        checkCode += code.ToString();
       }
    //将字符串checkCode写入Cookies并且返回字符串checkCode
       Response.Cookies.Add(new HttpCookie("CheckCode", checkCode));
    return checkCode;
      }
    //建立一个随机图形
    private void CreateCheckCodeImage(string checkCode)
      {
    if(checkCode == null || checkCode.Trim() == String.Empty)
    return;
    //建立一个位图文件 确立长宽
       System.Drawing.Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * 12.5)), 22);
       Graphics g = Graphics.FromImage(image);
    try
       {
    //生成随机生成器
        Random random = new Random();
    //清空图片背景色
        g.Clear(Color.White);
    //画图片的背景噪音线
    for(int i=0; i<25; 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.Silver), x1, y1, x2, y2);
        }
    //把产生的随机数以字体的形式写入画面
        Font font = new System.Drawing.Font("Arial", 12, (System.Drawing.FontStyle.Bold | System.Drawing.FontStyle.Italic));
        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(checkCode, font, brush, 2, 2);
    //画图片的前景噪音点
    for(int i=0; i<100; i++)
        {
    int x = random.Next(image.Width);
    int y = random.Next(image.Height);
         image.SetPixel(x, y, Color.FromArgb(random.Next()));
        }
    //画图片的边框线
        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);
        Response.ClearContent();
        Response.ContentType = "image/Gif";
        Response.BinaryWrite(ms.ToArray());
       }
    finally
       {
        g.Dispose();
        image.Dispose();
       }
      }
    #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
      {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
       InitializeComponent();
    base.OnInit(e);
      }
    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
      {   
    this.Load += new System.EventHandler(this.Page_Load);
      }
    #endregion
    }
    }

  • 相关阅读:
    【ASP.NET】服务器控件大演练与实例分析
    【利用存储过程和三层架构完成新闻发布】
    【软件工程】web规格开发全过程
    【数据库】如何解决数据库附加失败问题
    【框架设计】异常
    【数据库】SqlCommand的几个易忽视的执行操作
    【ASP.NET】asp.net 页面调用服务端对象值
    【c#迭代器】
    【框架设计】CLR寄宿和应用程序域
    【ASP.NET】演绎GridView基本操作事件
  • 原文地址:https://www.cnblogs.com/hsapphire/p/1802894.html
Copyright © 2011-2022 走看看