더 나은 형식에 대한 답변으로이 댓글을 추가
리는 신용 가치가있다. 답변을 추가하면이 답변을 귀하의 의견대로 삭제합니다.
방금 답을 추가 한 예가 잘못되어 있습니다. Leigh는 자신의 의견에서 OnSessionEnd
메서드 내에서 세션 범위를 다르게 참조해야한다고 설명했습니다.
또한 OnSessionEnd
메서드에 대한 인수가 누락되었습니다.
변수를 사용하기 전에 변수가 정의되어 있는지 확인하는 것이 좋습니다.
검색어에도 <cfqueryparam>
을 사용해야합니다.
는 모두 함께 넣고 그것은 다음과 같이 보일 것입니다 :이 요청에 의해 호출되지 않기 때문에
<cffunction name="OnSessionEnd" access="public" returntype="void" output="false">
<cfargument name="SessionScope" type="struct" required="true" />
<cfargument name="ApplicationScope" type="struct" required="false" default="#StructNew()#" />
<cfif StructKeyExists(ARGUMENTS.ApplicationScope,"datasource") AND StructKeyExists(ARGUMENTS.SessionScope,"user_id")>
<cfquery name="local.logout" datasource="#ARGUMENTS.ApplicationScope.datasource#">
update user
set logout_date = CURRENT_TIMESTAMP
where profile_id = <cfqueryparam cfsqltype="cf_sql_integer" value="#ARGUMENTS.SessionScope.user_id#" />
</cfquery>
<cfelse>
<!--- variables are not defined, do something else here? --->
</cfif>
<cfreturn />
</cffunction>
또한, 요청 범위이 방법 내에서 사용할 수 없습니다입니다.
[OnSessionStart] (https://helpx.adobe.com/coldfusion/cfml-reference/application-cfc-reference/onsessionstart.html) 및 [OnSessionEnd] (https : //)에서 이러한 종류의 정보를 캡처 할 수 있습니다. helpx.adobe.com/coldfusion/cfml-reference/application-cfc-reference/onsessionend.html). – Leigh
일단 세션이 종료되고 OnSessionEnd가되면 사용자 ID가 로그 아웃 할 수 있도록 사용자 ID를 얻을 수 있습니까? 어떤 범위가 여전히 사용 가능합니까? –
세션 시간이 초과되면 onSessionEnd가 트리거됩니다. 모든 세션 변수는 해당 함수가 실행을 완료 할 때까지 존재합니다. –