过滤非法字符

在最近的项目中自己写了一段处理过滤非法字符的函数

原理:

1:首先判断页面的提交方式只有在post的情况下才进行过滤非法字符

2:将所以form表单中的数据保存到一个allvalue中

3:判断缓存是否过期 过期时从数据库重新读取数据,并将其保存到缓存中 未过期则从缓存中读取数据

4:将allvalue中的值与缓存中的比较判断是否存在非法字段

 

 

     public void IfNoKeyWord()
        {
            if (HttpContext.Current.Request.HttpMethod == "POST")//form表单提交情况下
            {
                string allValue = string.Empty;
                for (int i = 0; i < HttpContext.Current.Request.Form.Count; i++)
                {
                    allValue += HttpContext.Current.Request.Form[i] + "|";//存储一个页面的所以form提交的内容

                }

                CSqlCommand cmd = new CSqlCommand();

               

        //在页面缓存过期的情况下,从数据库中读取数据;有缓存的情况下从缓存读取数据

                DataTable dt              

         if (Cache["LastCache"] == null)
                {   

          dt=cmd.getDataTable("select keywords from t_keywords");

                    Cache.Add("LastCache", dt, null, DateTime.Now.AddDays(1), TimeSpan.Zero, System.Web.Caching.CacheItemPriority.High, null);

                }

        else

                {

                 dt = (DataTable)Page.Cache["LastCache"];

                 }

 

        //对比查找
                  for (int j = 0; j < dt.Rows.Count; j++)
                {
                    if (allValue.IndexOf(dt.Rows[j][0].ToString()) > -1)
                    {

                        ZbUtils.alert("你的输入内容中包含非法字符:【" + dt.Rows[j][0].ToString() + "】!", " window.history.back(-1);", true);
                    }

                }

            }

        }

 

在页面basepage初始化的时候调用他

 protected override void OnInit(EventArgs e)
        {
            //可更改检测模式
            if (!CheckPower())
                return;
            CurrentUserId = Convert.ToInt32(Session["UserID"]);
            CurrentUserName = Session["UserName"].ToString();
            CurrentUserType = Convert.ToInt32(Session["UserType"]);

            IfNoKeyWord();////////

            base.OnInit(e);
        }

posted @ 2009-06-23 19:01  awp110  阅读(372)  评论(0编辑  收藏  举报