게시판의 조회화면에서 새로고침을 할 경우 조회수가 증가하는 경우가 있다.

동일한 사용자가 같은 글을 조회할 경우 조회수 증가가 없도록 해할 할 때 사용,

쇼핑몰에서 구매과정중 새로고침 현상으로 인해 발생할 수 있는 이중과금문제를 필할때,

 

다음과 같이 한 번 해보자.

 

public class Refresh : System.Web.UI.WebControls.WebControl
{
    bool _isrefresh = false;
    string _tname = "__Ticket";

    public Refresh()
    {
        if (HttpContext.Current == null) return;

        // Get Session and Request objects
        HttpSessionState S = HttpContext.Current.Session;
        HttpRequest R = HttpContext.Current.Request;

        // Change null to 0 (prevents errors)
        if (S[_tname + "_LastServed"] == null) { S[_tname + "_LastServed"] = 0; }

        // Get current and last ticket served
        int ticket = Convert.ToInt32(R["__" + _tname]) + 1;
        int lastticket = Convert.ToInt32(S[_tname + "_LastServed"]);

        // Refresh detection
        if (ticket > lastticket || (ticket == 0 && lastticket == 0))
        {
            S[_tname + "_LastServed"] = ticket;
        }
        else
        {
            _isrefresh = true;
        }
    }

    protected override void Render(HtmlTextWriter output)
    {
        HttpSessionState S = HttpContext.Current.Session;
        Page.RegisterHiddenField("__" + _tname, S[_tname + "_LastServed"].ToString());
    }

    public bool IsRefresh
    {
        get { return _isrefresh; }
    }

    public string version
    {
        get { return System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString(); }
    }
}

 

<CC1:REFRESH id="Refresh1" runat="server"></CC1:REFRESH>

 

+ Recent posts