게시판의 조회화면에서 새로고침을 할 경우 조회수가 증가하는 경우가 있다.
동일한 사용자가 같은 글을 조회할 경우 조회수 증가가 없도록 해할 할 때 사용,
쇼핑몰에서 구매과정중 새로고침 현상으로 인해 발생할 수 있는 이중과금문제를 필할때,
다음과 같이 한 번 해보자.
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>
'.net' 카테고리의 다른 글
유효성 검사 후 별도 스크립트 실행하기 (0) | 2007.05.03 |
---|---|
더욱 탄탄한 기초 위에 ASP.NET 페이지 작성하기 (0) | 2007.05.03 |
URL Rewriting in ASP.NET (6) | 2007.05.03 |
HTTP모듈을 이용해서 Refresh를 막는 방법 (1) | 2007.05.03 |
데이터 바인딩 기본 (0) | 2007.05.03 |