asp.Net 一些常用的方法和類

jopen 12年前發布 | 1K 次閱讀

生成驗證碼:

using System;
using System.Data;
using System.Configuration;
using System.Collections;
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.Drawing;

public partial class CheckCode : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { //生成驗證碼 string temp = this.GetCode(4); HttpCookie cookie = new HttpCookie("yzm"); cookie.Value = temp; Response.Cookies.Add(cookie); //畫圖 this.GetCheckCodeImage(temp); } }

//產生隨機字符串 
private string GetCode(int num)
{
    string[] source ={ "1", "2", "3", "4", "5", "6", "7", "8", "9", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", 
        "K", "L", "M", "N", "O","P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" ,"a", "b", "c", "d", "e", "f", "g", "h", "i", "j", 
        "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y","z"};
    string code = "";
    Random rd = new Random();
    for (int i = 0; i < num; i++)
    {
        code += source[rd.Next(0, source.Length)];
    }
    Session["ValidateCode"] = code;//將字符串保存到Session中,以便需要時進行驗證  
    return code;

}


#region    驗證碼

/// <summary>
/// 生成驗證碼
/// </summary>
/// <param name="checkCode"></param>
private void GetCheckCodeImage(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)),25);
    Graphics g = Graphics.FromImage(image);
    try
    {
        Random random = new Random();     //生成隨機生成器 
        g.Clear(Color.White);            //清空圖片背景色
        for (int i = 0; i < 5; 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 < 60; 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();
    }
}

#endregion


}</pre></strong>清空緩存:

        //清空客戶端頁面緩存
        public static void ClearClientPageCache()
        {
            HttpContext.Current.Response.Buffer = true;
            HttpContext.Current.Response.Expires = 0;
            HttpContext.Current.Response.ExpiresAbsolute = DateTime.Now.AddDays(-1);
            HttpContext.Current.Response.AddHeader("pragma", "no-cache");
            HttpContext.Current.Response.AddHeader("cache-control", "private");
            HttpContext.Current.Response.CacheControl = "no-cache";
        }
分頁方法:
using System;
using System.Collections.Generic;
using System.Web;
using System.Text;
using System.Text.RegularExpressions;

public class PagingCollection<T>
{
    private int pagezise;

    public int Pagezise
    {
        get { return pagezise; }
        set { pagezise = value; }
    }
    private int pageindex;

    public int Pageindex
    {
        get { return pageindex; }
        set { pageindex = value; }
    }
    private int TotalCount;

    public int TotalCount1
    {
        get { return TotalCount; }
        set { TotalCount = value; }
    }
    private int TotalPage=0;

    public int TotalPage1
    {
        get { return TotalPage; }
        set { TotalPage = value; }
    }
    private string url;

    public string Url
    {
        get { return url; }
        set { url = value; }
    }
    private string urlparms;

    public string Urlparms
    {
        get { 

            return urlparms; }
        set { urlparms = value; }
    }

    /// <summary>
    /// 分頁數據構造
    /// </summary>
    /// <param name="source"></param>
    /// <param name="pageindex"></param>
    /// <param name="pagezise"></param>
    /// <param name="totalcount"></param>
    /// <param name="url"></param>
    public PagingCollection(int pageindex, int pagezise, int totalcount, string url)
    {
        this.pageindex = pageindex;
        this.pagezise = pagezise;
        TotalCount = totalcount;
        TotalPage = (int)Math.Ceiling(TotalCount / (double)pagezise);
        this.url = url;

    }

    public PagingCollection(int pageindex, int pagezise, int totalcount, string url,string urlparms)
    {
        this.pageindex = pageindex;
        this.pagezise = pagezise;
        TotalCount = totalcount;
        TotalPage = (int)Math.Ceiling(TotalCount / (double)pagezise);
        this.url = url;
        this.urlparms = urlparms;

    }

    #region 分頁屬性 返回分頁數據

    public string GetPatePar
    {
        get
        {
            if (TotalCount1 > 0)
            {
                StringBuilder str = new StringBuilder();
                int startpage = (pageindex - 1) / 10 * 10 + 1;
                int endpage = (pageindex - 1) / 10 * 10 + 10;
                int x = endpage > TotalPage ? TotalPage : endpage;
                str.Append("<div  style=' color:#1E5494;'>共" + TotalPage1 + "頁 /  當前第" + pageindex + "頁&nbsp;&nbsp;&nbsp;");

                if (HasPreviousPage)
                {
                    str.Append("<a href=" + url + "?page=1" + GetURLParms + "" + urlparms + ">首頁</a>&nbsp;");
                    str.Append("<a href=" + url + "?page=" + (pageindex - 1) + GetURLParms + "" + urlparms + ">上一頁</a>");
                }
                else
                {
                    str.Append("<a href=#>首頁&nbsp;</a>");
                    str.Append("<a href=#>上一頁</a>");
                }
                for (int i = startpage; i <= x; i++)
                {
                    if (i == pageindex)
                    {
                        str.Append(string.Format("<a style='margin-left:3px; margin-right:3px;padding:2px 4px 2px 4px;color:red;border:1px solid #cccccc;background-color:#ffffff; '>" + i + "</a>"));
                    }
                    else
                    {
                        str.Append(string.Format("<a style='margin-left:3px; margin-right:3px;'  href=" + url + "?page=" + i + GetURLParms + "" + urlparms + ">" + i + "</a>"));
                    }
                }
                if (HasNextPage)
                {

                    str.Append("<a href=" + url + "?page=" + (pageindex + 1) + GetURLParms + "" + urlparms + ">下一頁&nbsp;</a>");
                    str.Append("<a href=" + url + "?page=" + TotalPage + GetURLParms + "" + urlparms + ">尾頁</a>");
                }
                else
                {
                    str.Append("<a href=#>下一頁&nbsp;</a>");
                    str.Append("<a href=#>尾頁</a>");
                }
                str.Append("</div>");
                return str.ToString();
            }
            else
            {
                return "<font color=red>暫無數據!</font>";
            }

        }
    }

    #endregion

    /// <summary>
    /// url重寫
    /// </summary>
    private string GetURLParms
    {
        get
        {
                string query = HttpContext.Current.Request.Url.Query;
                query = Regex.Replace(query, @"\?page=\d*", "", RegexOptions.Compiled);
                return query;

        }
    }

    /// <summary>
    ///判斷是否有上一頁
    /// </summary>
    public bool HasPreviousPage
    {
        get
        {
            return (pageindex > 1);
        }
    }
    /// <summary>
    ///判斷是否有下一頁
    /// </summary>
    public bool HasNextPage
    {
        get
        {
            return (pageindex < TotalPage);
        }
    }
}

/// <summary>
/// 分頁數據類
/// </summary>
/// <typeparam name="T"></typeparam>
public class PageBean<T>
{

    IList<T> datasource = new List<T>();

    public IList<T> Datasource
    {
        get { return datasource; }
        set { datasource = value; }
    }

    int pagesum;

    public int Pagesum
    {
        get { return pagesum; }
        set { pagesum = value; }
    }
    public PageBean(IList<T> datasource, int pagesum)
    {
        this.datasource = datasource;
        this.pagesum = pagesum;
    }
    public PageBean()
    {
        //
        // TODO: 在此處添加構造函數邏輯
        //
    }

}</pre></strong>生成圖片水印:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Drawing;
using System.Drawing.Imaging;

/// <summary> /// PictureHandler 的摘要說明 /// </summary> public class PicHandler : IHttpHandler { public void ProcessRequest(HttpContext context) { context.Response.ContentType = "text/plain";

        string imgUrl = context.Request.PhysicalPath;//得到當前處理圖片的物理路徑
        if (File.Exists(imgUrl))
        {
            Image img = Image.FromFile(imgUrl);//通過圖片路徑得到圖片對象
            Image watering = Image.FromFile(context.Server.MapPath("~/themes/images/water.jpg"));//得到數字水印圖片
            Graphics g = Graphics.FromImage(img);//通過圖片對象創建畫布
            g.DrawImage(watering, new Rectangle(img.Width - watering.Width, img.Height - watering.Height, watering.Width, watering.Height), 0, 0, watering.Width, watering.Height, GraphicsUnit.Pixel);//畫圖
            context.Response.ContentType = "image/jpeg";//設置圖片的格式
            img.Save(context.Response.OutputStream, ImageFormat.Jpeg);//把圖片保存在輸出流中
            g.Dispose();//銷毀畫布
            img.Dispose();//銷毀圖片
            context.Response.End();
        }
        else
        {
            Image defaultimg = Image.FromFile(context.Server.MapPath("~/themes/images/water.jpg"));//通過圖片路徑得到默認圖片對象
            Image watering = Image.FromFile(context.Server.MapPath("~/themes/images/water.jpg"));//得到數字水印圖片
            Graphics g = Graphics.FromImage(defaultimg);//通過圖片對象創建畫布
            g.DrawImage(watering, new Rectangle(defaultimg.Width - watering.Width, defaultimg.Height - watering.Height, watering.Width, watering.Height), 0, 0, watering.Width, watering.Height, GraphicsUnit.Pixel);//畫圖

            context.Response.ContentType = "image/jpeg";//設置圖片的格式
            defaultimg.Save(context.Response.OutputStream, ImageFormat.Jpeg);
            g.Dispose();
            defaultimg.Dispose();
            context.Response.End();
        }

    }
    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}</pre></strong><strong>防注入過濾:<pre class="brush:c#; toolbar: true; auto-links: false;">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.Data.SqlClient;

/// <summary> /// SqlCheck 的摘要說明 /// </summary>

public class SqlCheck
{

    public void CheckSql()
    {

        string jk1986_sql = "exec↓select↓drop↓alter↓exists↓union↓and↓or↓xor↓order↓mid↓asc↓execute↓xp_cmdshell↓insert↓update↓delete↓join↓declare↓char↓sp_oacreate↓wscript.shell↓xp_regwrite↓'↓;↓--";
        string[] jk_sql = jk1986_sql.Split('↓');
        foreach (string jk in jk_sql)
        {
            // -----------------------防 Post 注入-----------------------
            if (System.Web.HttpContext.Current.Request.Form != null)
            {
                for (int k = 0; k < System.Web.HttpContext.Current.Request.Form.Count; k++)
                {
                    string getsqlkey = System.Web.HttpContext.Current.Request.Form.Keys[k];
                    string getip;
                    if (System.Web.HttpContext.Current.Request.Form[getsqlkey].ToLower().Contains(jk) == true)
                    {
                        System.Web.HttpContext.Current.Response.Write("<script Language=JavaScript>alert('請勿提交非法字符!');</" + "script>");
                        System.Web.HttpContext.Current.Response.Write("非法操作!系統做了如下記錄 ↓" + "<br>");
                        if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
                        {
                            getip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                        }
                        else
                        {
                            getip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
                        }
                        System.Web.HttpContext.Current.Response.Write("操 作 I  P :" + getip + "<br>");
                        System.Web.HttpContext.Current.Response.Write("操 作 時 間:" + DateTime.Now.ToString() + "<br>");
                        System.Web.HttpContext.Current.Response.Write("操 作 頁 面:" + System.Web.HttpContext.Current.Request.ServerVariables["URL"] + "<br>");
                        System.Web.HttpContext.Current.Response.Write("提 交 方 式:P O S T " + "<br>");
                        System.Web.HttpContext.Current.Response.Write("提 交 參 數:" + jk + "<br>");
                        System.Web.HttpContext.Current.Response.Write("提 交 數 據:" + System.Web.HttpContext.Current.Request.Form[getsqlkey].ToLower() + "<br>");
                        System.Web.HttpContext.Current.Response.End();
                    }
                }
            }
            // -----------------------防 GET 注入-----------------------
            if (System.Web.HttpContext.Current.Request.QueryString != null)
            {
                for (int k = 0; k < System.Web.HttpContext.Current.Request.QueryString.Count; k++)
                {
                    string getsqlkey = System.Web.HttpContext.Current.Request.QueryString.Keys[k];
                    string getip;
                    if (System.Web.HttpContext.Current.Request.QueryString[getsqlkey].ToLower().Contains(jk) == true)
                    {
                        System.Web.HttpContext.Current.Response.Write("<script Language=JavaScript>alert('請勿提交非法字符!');</" + "script>");
                        System.Web.HttpContext.Current.Response.Write("非法操作!系統做了如下記錄 ↓" + "<br>");
                        if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
                        {
                            getip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                        }
                        else
                        {
                            getip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
                        }
                        System.Web.HttpContext.Current.Response.Write("操 作 I  P :" + getip + "<br>");
                        System.Web.HttpContext.Current.Response.Write("操 作 時 間:" + DateTime.Now.ToString() + "<br>");
                        System.Web.HttpContext.Current.Response.Write("操 作 頁 面:" + System.Web.HttpContext.Current.Request.ServerVariables["URL"] + "<br>");
                        System.Web.HttpContext.Current.Response.Write("提 交 方 式:G E T " + "<br>");
                        System.Web.HttpContext.Current.Response.Write("提 交 參 數:" + jk + "<br>");
                        System.Web.HttpContext.Current.Response.Write("提 交 數 據:" + System.Web.HttpContext.Current.Request.QueryString[getsqlkey].ToLower() + "<br>");
                        System.Web.HttpContext.Current.Response.End();
                    }
                }
            }

            // -----------------------防 Cookies 注入-----------------------
            if (System.Web.HttpContext.Current.Request.Cookies != null)
            {
                for (int k = 0; k < System.Web.HttpContext.Current.Request.Cookies.Count; k++)
                {
                    string getsqlkey = System.Web.HttpContext.Current.Request.Cookies.Keys[k];
                    string getip;
                    if (System.Web.HttpContext.Current.Request.Cookies[getsqlkey].Value.ToLower().Contains(jk) == true)
                    {
                        System.Web.HttpContext.Current.Response.Write("<script Language=JavaScript>alert('請勿提交非法字符!');</" + "script>");
                        System.Web.HttpContext.Current.Response.Write("非法操作!系統做了如下記錄 ↓" + "<br>");
                        if (System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"] != null)
                        {
                            getip = System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"];
                        }
                        else
                        {
                            getip = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
                        }
                        System.Web.HttpContext.Current.Response.Write("操 作 I  P :" + getip + "<br>");
                        System.Web.HttpContext.Current.Response.Write("操 作 時 間:" + DateTime.Now.ToString() + "<br>");
                        System.Web.HttpContext.Current.Response.Write("操 作 頁 面:" + System.Web.HttpContext.Current.Request.ServerVariables["URL"] + "<br>");
                        System.Web.HttpContext.Current.Response.Write("提 交 方 式: Cookies " + "<br>");
                        System.Web.HttpContext.Current.Response.Write("提 交 參 數:" + jk + "<br>");
                        System.Web.HttpContext.Current.Response.Write("提 交 數 據:" + System.Web.HttpContext.Current.Request.Cookies[getsqlkey].Value.ToLower() + "<br>");
                        System.Web.HttpContext.Current.Response.End();
                    }
                }
            }

        }
    } 
}</pre></strong>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!