2011-03-23 2 views
1

저는 Zend 프레임 워크 인스턴스를 레거시 코드를 수정하지 않고 골동품 레거시 코드와 결혼시키려는 재미없는 작업을했습니다. 데이터 힙을 가져 와서 확인하고 처리 한 다음 웹 사이트 소유자에게 전자 메일로 보냅니다. 제 직업은 데이터를 ZF로 가져 와서 데이터베이스로 자동 처리 할 수있는 것입니다. POST를 사용할 수 없습니다. 나는 Javascript를 사용하고 있다고 생각하지 않기 때문에 autosubmitting 형식을 사용하는 것을 피하고 싶습니다. 고통스럽게 다루기 힘들 수 있습니다.젠드 프레임 워크가 기존 세션을 지우지 않게하려면 어떻게해야합니까?

내 희망은 세션을 사용하여 기존 폼 프로세서에서 ZF로 데이터를 가져와야한다는 것이 었습니다. 데이터는 이미 폼 프로세서의 세션에 있습니다. 처음에는 ZF 인스턴스 (메인 웹 사이트의 하위 디렉토리에 있음)로 리디렉션하는 것이 간단한 일이라고 생각했습니다. 그것은 동일한 도메인입니다, 똑같은 세션이어야합니다, 맞죠?

ZF가 세션을 처리하는 방식에 관한 한 가지로 인해 이전 세션 데이터가 완전히 완전히 삭제됩니다. 방금 떠났어.

그래서 ZF는 기존 세션을 지우거나 우연히 만회하는 방식으로 세션을 처리합니까? 우연이 아니라면 어떻게 우회 할 수 있습니까? 그리고 만약 그렇다면, 그 원인은 무엇입니까/어떻게 해결할 수 있습니까?

편집

나는 데이터베이스 백업 세션 Zend_Session_SaveHandler_DbTable을 사용하고 있습니다. 이것은 application.ini에서 초기화됩니다. 다음은 초기화 코드입니다 : 내가 세션을 사용하고 어디

resources.session.saveHandler.class = "Zend_Session_SaveHandler_DbTable" 
resources.session.saveHandler.options.name = "Sessions" 
resources.session.saveHandler.options.primary = "sessionID" 
resources.session.saveHandler.options.modifiedColumn = "lastModifiedTime" 
resources.session.saveHandler.options.dataColumn = "data" 
resources.session.saveHandler.options.lifetimeColumn = "lifetime" 

, 내가 session_start()를 호출 시도,하지만 그 오류를 생성합니다. 저장 핸들러 코드가 이미 세션을 초기화했거나 나중에 세션을 초기화했기 때문일 수 있습니다. $_SESSION 변수에 직접 액세스하려고하면 설정되지 않은 변수에 액세스하려고했음을 나타내는 오류가 발생할 수 있습니다. Zend_Session_Namespace을 먼저 만든 다음 $_SESSION에 액세스하려고하면 빈 세션이 발생합니다.

+3

반드시 같은 세션 번호 일 필요는 없습니다. Zend_Session을 사용하는 방법에 따라 다릅니다. 네임 스페이스 (Zend_Session_Namespace)를 사용하고 있습니까? 맞춤 또는 자동 생성 ID? 그것은 약간의 코드를 보는 것을 도울 것입니다. – netcoder

+0

확인할 수있는 경우 ZF 앱에서만 데이터가 보이지 않습니까? 아니면 둘 다에서 데이터가 삭제 되었나요? – Phil

+0

@netcoder 요청에 따라 더 많은 정보를 추가하도록 편집 됨. –

답변

1

파일 시스템 대신 데이터베이스에 세션을 저장하도록 ZF를 설정 했으므로 을 사용하지 않는 스크립트를 사용하면 동일한 ZF 부트 스트랩 코드이 세션을 호출하려고 시도합니다. (그렇다하더라도, 그들은 또한 두 개의 완전히 다른 세션 쿠키 이름을 사용 할 수 ...)

을 당신이 ZF 비트가 새로운 있음을 암시했기 때문에, 그 해결책은 간단하다 : ZF의 세션 비트를 사용 중지 지금 당장. 즉, 데이터베이스 테이블을 저장할 필요가 없으며 네임 스페이스 처리기가 필요하지 않습니다. 원시 $_SESSION 수퍼 글로벌으로 작업하고 레거시 코드와 동일한 세션 설정을 사용하십시오. 이 두 가지 응용 프로그램이 같은 레거시 코드를 수정하지 않고없이 동일한 세션 데이터에 액세스 할 수있게하는 유일한 방법입니다.

관련 문제