2012-11-20 2 views
1

페이지 새로 고침 후 데이터를 데이터베이스에 다시 삽입하는 것을 방지하는 것이 더 좋습니다.새로 고침 후 삽입 방지 : 타임 스탬프와 기존 레코드 확인

행을 삽입하거나 viewState를 사용하고 세션이 더 효율적일 때마다 데이터베이스를 검사해야합니까?

protected void Page_Load(object sender, EventArgs e) 
    { 

     /* check refresh */ 
     if (IsPostBack == false) 
     { 
      Session["CheckRefresh"] = Server.UrlDecode(System.DateTime.Now.ToString()); 
     } 
     //rest of the codes 
    } 

    protected void Page_PreRender(object sender, EventArgs e) 
    { 
     // set both session and viewstate value equal 
     ViewState["CheckRefresh"] = Session["CheckRefresh"]; 
    } 

    protected void btnSaveTazkera_Click(object sender, EventArgs e) 
    { 
     if (Session["CheckRefresh"].ToString() == ViewState["CheckRefresh"].ToString()) 
     { 
      //give a new value to session 
      Session["CheckRefresh"] = Server.UrlDecode(System.DateTime.Now.ToString()); 
    //rest of the code 
    } 

tnx.

답변

0

세션을 사용하면 효과적 일뿐만 아니라 100 % 안전하지 않을 수도 있습니다. 페이지를 새로 고치지 않고 브라우저를 다시 열고 동일한 정보를 다시 입력하면 세션이 새롭고 데이터는 여전히 유지됩니다. 두 번 삽입하십시오).

레코드를 데이터베이스에 이중 삽입하지 않으려면 가장 쉬운 방법은 각 기본 키를 만들거나 삽입이 성공했는지 여부를 확인하는 저장 프로 시저를 통해 삽입하는 것입니다.

삽입하기 전에 추가 검사로 세션을 계속 사용할 수 있지만 최종 검사는 데이터베이스/데이터베이스에 삽입하는 코드에 맡겨야합니다.

그러나 이것은 내 의견이며 어떻게 할 수 있습니까? 나는 할 수있는 표준적인 것이 있다고 생각하지 않는다 :-)