2012-06-28 2 views
0

*이 코드가 많은 이유는 무엇입니까? 나는 다른 누군가가 개발 한 사이트를 운영하고있다. 그것의 많은 것은 내가 그것을 할 것 인 방법이 아니다. 그러나 그것이 현재하게되는 방법이다. 손으로 고마워.IE에서 SESSION 변수가 삭제되었습니다.

우리는 사용자가 우리 학교에서 수업을 검색 할 수있는 간단한 응용 프로그램을 가지고 있습니다. 애플 리케이션으로 모든 것이 잘 작동했지만 최근에 우리 서버를 IIS 7과 Coldfusion 10으로 업그레이드했습니다. 그 이후로 인터넷 익스플로러를 사용하는 일부 사용자는 응용 프로그램을 사용할 수 없지만 문제는 100 % 널리 퍼지지 않았습니다. 사실 아주 산발적이다. 프로세스 중에 설정되지 않은 단일 세션 변수 [SESSION.location]로 범위를 좁혔지만 어디에 있는지 알 수 없습니다. 아래에 관련 코드를 게시 해 보겠습니다.

Application.CFC에는이 변수가 포함되지 않습니다. 양식 제출을 처리하는 공통 헤더가 있습니다. 양식 과정을 검색에있는 페이지에서

<cftry> 
     <cfset the_message = (structKeyExists(REQUEST, 'message')) ? REQUEST.message : (isDefined('submitFrmData')) ? submitFrmData() : ''> 
     <cfif Len(Trim(the_message)) NEQ 0><div id="message">#the_message#</div></cfif> 
    <cfcatch>#createObject('component','common.err_handler').pageErrHandler(CFCATCH)#</cfcatch> 
    </cftry> 

, 나는 세션을 덤프 나는 설정된 SESSION.location을 볼 수 있습니다. 양식의 조치는 상단에 다음과 같은 search_results.cfm 페이지로 전송됩니다.

public string function submitFrmData() { 
    //Every time page loads. 
    dal = CreateObject('component','cfcs.dal'); 
    if(structKeyExists(FORM, 'search_courses')){ 
     if (len(FORM.coursefinder_search) > 2 && arrayLen(REMatch("[%[email protected]##$^&*()]", FORM.coursefinder_search)) < 1) { 
      if(structKeyExists(session, "location") && structKeyExists(session, "semester_id")){ 
       location('search_results.cfm?fsrch=' & APPLICATION.cFun.structToEncryptedString(FORM) & '&sem_id=#SESSION.semester_id#&loc_id=#SESSION.location#',false); 
      } else { 
       location("index.cfm", false); 
      } 
     } else if(structKeyExists(FORM, 'dept_id')){  
      if(structKeyExists(session, "location") && structKeyExists(session, "semester_id")){ 
       location('search_results.cfm?srch='& APPLICATION.cFun.structToEncryptedString(FORM) & '&sem_id=#SESSION.semester_id#&loc_id=#SESSION.location#',false); 
      } else { 
       location("index.cfm", false); 
      } 
     } else { 
      location ("index.cfm", false); 
     } 
    } 
    if(structKeyExists(URL, 'srch')){ 
     srch_result = dal.CrsSearch(APPLICATION.cFun.encStringToStruct(URL.srch)); 
     realResults = new query(dbtype="query", QoQsrcTable=srch_result, sql="SELECT DISTINCT COURSEID, sectioncode FROM QoQsrcTable").execute().getResult(); 
     numCoursesFound = (len(trim(realResults.courseid)) NEQ 0) ? realResults.recordCount : 0; 
    } 
    if(structKeyExists(URL, 'fsrch')){ 
     srch = APPLICATION.cFun.encStringToStruct(URL.fsrch); 
     if(!structKeyExists(srch,'coursefinder_search')){ 
      location ("index.cfm", false); 
     } 
     srch_result = dal.CrsFreeSearch(srch.COURSEFINDER_SEARCH); 
     realResults = new query(dbtype="query", QoQsrcTable=srch_result, sql="SELECT DISTINCT COURSEID, sectioncode FROM QoQsrcTable").execute().getResult(); 
     numCoursesFound = (len(trim(realResults.courseid)) NEQ 0) ? realResults.recordCount : 0; 
    } 

    return ''; 
} 

내게 이것은 이상한 일이지만 이것은 일어납니다. FORM은 헤더가 호출되기 전에 submitFrmData 함수가 정의 된 결과 페이지로 전송됩니다. 헤더가 호출되고 submitFrmData 함수가 실행됩니다. 일단 그 함수에 들어가면, 나는 세션을 덤프하고 SESSION.location은 손실된다. 다른 세션 변수는 그대로 유지되지만 위치는 손실됩니다. 많은 세션 변수가 OnRequestStart 함수에서 설정됩니다. 그러면 모든 세션 변수가 손실되고 OnRequestStart 호출에서 다시 설정됩니다.

하지만 IE가 일부 컴퓨터에서만 이러한 변수를 잃어 버리는 이유는 무엇입니까? 영향을받는 컴퓨터는 서버 업그레이드 전에 응용 프로그램에 액세스 한 것으로 보이지만 일부는 정상적으로 작동합니다. 내가 작업하는 컴퓨터는 IE의 모든 버전에서 정상적으로 작동합니다. 문제가 계속되면 IE에서 캐시 된 모든 데이터를 지우려고했습니다.

나는 문제가있는 랩톱을 오늘 받고 있는데 잘하면 그들이 잃어버린 단계를 정확히 알기 전까지는 회의 전체를 덤프 할 수있을 것이라고 기대하지만 그 이유는 설명하지 않는다. IE를 실행하는 일부 컴퓨터에서 IE를 실행하는 모든 컴퓨터가 아닙니다. OS 문제 일 수 있습니까?

+1

영향을받는 시스템이 쿠키를 유지하고 있는지 확인 했습니까? CF는 메모리에 대한 적절한 세션 정보를 선택할 수 있도록 올바른 쿠키를 사용합니다. IE가 어떤 이유로 든 쿠키를 유지 관리하지 않으면 사용자도 세션을 잃게됩니다. –

+0

문제를 올바르게 이해 한 새로운 질문을 읽어보십시오. [링크] (stackoverflow.com/questions/11831487/1-of-users-get-new-session-id-on-each-page-request) – Leeish

답변

1

우리는 하위 도메인으로 실행하고있었습니다. 메인 도메인은 또한 Coldfusion을 사용하고 우리 사이트와 충돌하는 사이트 전체 쿠키를 사용했습니다. 이로 인해 문제가 발생했으며 이후 해결되었습니다.

+0

어떻게 해결 했습니까? –

+0

ColdFusion에는 두 가지 쿠키 유형에 대한 옵션이 있다고 생각합니다. 우리는 J2EE 세션 변수 인 다른 유형을 사용하기 시작했다고 생각합니다. 그렇지 않았기 때문에 쿠키가 달랐습니다. – Leeish

관련 문제