zoukankan      html  css  js  c++  java
  • 防止页面重复提交

    /*-----------------------------------------
     *开 发 者:  awp
     *创建日期:   2009-6-25 星期4
     *功能描述:   防止页面重复提交
     *
     * 用法服务器控件的
     *  <form id="form1" runat="server">
        <input type="text" id="tbxName" runat="server" />
        <input type="text" id="tbxPass" value="" runat="server" />
        <asp:Button ID="btnSubmit" runat="server" OnClick="Button1_Click" Text="Button" />
        <asp:Label ID="lblMessage" runat="server" Text=""></asp:Label>
        <input id="hiddenTest" type="hidden" value="<%=AvoidRefurbish.GetToken() %>" name="hiddenTestN" />
        </form>
     * 后台代码
     * 
     *  protected void Page_Load(object sender, EventArgs e)
        {
            AvoidRefurbish.FirstRefurbish();
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            if (AvoidRefurbish.IfOnRefurbish())
            {
                Response.Write("true");
            }
            else
            {
                Response.Write("false");
            }
        }
     * 
     * 
     * 
     * html控件
     * 
     *   <form id="form1" action="?cmd=add" method="post">
        <input type="text" id="tbxName" runat="server" />
        <input type="text" id="tbxPass" value="" runat="server" />
        <input id="Submit1" type="submit" value="submit" />
        <input id="hiddenTest" type="hidden" value="<%=AvoidRefurbish.GetToken() %>" name="hiddenTestN" />
        </form>
     * 
     *  protected void Page_Load(object sender, EventArgs e)
        {
         AvoidRefurbish.FirstRefurbish();

            if (Request.QueryString["cmd"] != null)
            {
                if (Request.QueryString["cmd"].ToString() == "add")
                {

                    if (AvoidRefurbish.IfOnRefurbish())
                    {
                        Response.Write("true");
                    }
                    else
                    {
                        Response.Write("false");
                    }
                }
            }
        }
     * 
     * 
     * 
     *-----------------------------------------
    */
    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.HtmlControls;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Security.Cryptography;
    using System.Text;

    /// <summary>
    ///AvoidRefurbish 的摘要说明
    /// </summary>
    public class AvoidRefurbish
    {
        
    /// <summary>
        
    /// 判断是否正常提交
        
    /// </summary>
        
    /// <returns></returns>
        public static bool IfOnRefurbish()
        {
            
    if (HttpContext.Current.Request.Form.Get("hiddenTestN").Equals(GetToken()))
            {
                SetToken();
                
    return true;
            }
            
    return false;
        }

        
    /// <summary>
        
    /// 第一次进入页面
        
    /// </summary>
        public static void FirstRefurbish()
        {
            
    //第一次载入的时候,生成一个初始的标志 
            if (null == HttpContext.Current.Session["Token"])
            {
                SetToken();
            }
        }

        
    /// <summary>
        
    /// 获得当前Session里保存的标志 
        
    /// </summary>
        
    /// <returns></returns>
        public static string GetToken()
        {
            
    if (null != HttpContext.Current.Session["Token"])
            {
                
    return HttpContext.Current.Session["Token"].ToString();
            }
            
    else
            {
                
    return string.Empty;
            }
        }


        
    //生成标志,并保存到Session 
        private static void SetToken()
        {
            HttpContext.Current.Session.Add(
    "Token", UserMd5(HttpContext.Current.Session.SessionID + DateTime.Now.Ticks.ToString()));
        }


        
    //这个函数纯粹是为了让标志稍微短点儿,一堆乱码还特有神秘感,另外,这个UserMd5函数是网上找来的现成儿的 
        private static string UserMd5(string str1)
        {
            
    string cl1 = str1;
            
    string pwd = "";
            MD5 md5 
    = MD5.Create();
            
    // 加密后是一个字节类型的数组 
            byte[] s = md5.ComputeHash(Encoding.Unicode.GetBytes(cl1));
            
    // 通过使用循环,将字节类型的数组转换为字符串,此字符串是常规字符格式化所得 
            for (int i = 0; i < s.Length; i++)
            {
                
    // 将得到的字符串使用十六进制类型格式。格式后的字符是小写的字母,如果使用大写(X)则格式后的字符是大写字符 
                pwd = pwd + s[i].ToString("X");
            }
            
    return pwd;
        }
    }
  • 相关阅读:
    (三)数据预处理过程简介
    (二)数据挖掘需要哪些技术
    (一) 什么是数据挖掘?
    怎样提问呢?
    什么是自我意识
    高效能人士的七个习惯
    “U”型读书法
    CMDB学习之一
    层级选择器
    css选择器
  • 原文地址:https://www.cnblogs.com/aaa6818162/p/1519839.html
Copyright © 2011-2022 走看看