2013-08-07 2 views
3

오늘 밤 내가 겪고있는 일에 완전히 당황합니다. 나는 이것을 디버깅하려고 한 시간을 보냈지만 아무데도 가지 않았다. 나는 단순한 것을 간과하기를 바란다 ....변수는 반향 후에 만 ​​사용 가능

문제는 우리가 ID를 얻고 그것을 변수 ($ event)에 저장하고 세션을 시작하고 $ event를 세션 배열에로드한다는 것이다. 브라우저 윈도우에 텍스트를 반향 출력하지 않으면 변수가 세션에서 설정되지 않습니다. 브라우저에 아무 것도 표시하지 않으면 변수가 올바르게 참조됩니다. var_dump on $ 이벤트를 완료했으며 길이가 X 인 문자열로 올바르게 저장됩니다. 여기서 X는 ID의 길이입니다.

$event = $this->Event_model->get_event_id_with_form_id($batch->event_id); // This call successfully returns "100" 
session_start(); 
$_SESSION['ckfinder'] = array(); 
$_SESSION['ckfinder']['enabled'] = true; 
$_SESSION['ckfinder']['uploadURL'] = '/assets/event_uploads/' . $event . '/'; 

echo $_SESSION['ckfinder']['uploadURL']; // Returns "/assets/event_uploads//" 

그러나, 위해서 var_dump ($ 이벤트) 반환 문자열 (3) "100"그래서 우리는 $ 이벤트가 존재한다는 것을 알고

여기에 관련 코드입니다.

$ event를 명시 적으로 '100'으로 설정하면 echo 호출은 "/ assets/event_uploads/100 /"를 반환합니다.

위 코드를 그대로두고 ($ this-> Event_model을 호출하여) 위의 코드를 그대로두고 session_start (즉, 'a';)를 echo 한 후 echo를 추가하면됩니다. echo 호출은 올바른 경로를 리턴합니다.

왜 이런 일이 발생하는지 분명하지 않습니다. 나는 PHP로 이런 문제를 경험하지 못했다. 다시 한번 말하지만 이것은 나의 수면 부족 때문일 수있다.

+0

페이지 상단에'session_start(); '를 넣으면 어떻게 될까요? – Shomz

+0

여전히 좋지 않습니다 (아직 시도하지는 않았지만). 내가 게시 한 코드 블록은 뷰를로드하는 것 외에도 해당 페이지의 코드 전체입니다. 하지만 불행히도 session_start(); $ event = .... line 위까지는 문제가 해결되지 않았습니다. – Kevin

+0

흠, 이거 뭡니까? '$ _SESSION [ 'ckfinder'] [ 'uploadURL'] = '/ assets/event_uploads /'. $ this-> Event_model-> get_event_id_with_form_id ($ batch-> event_id). '/';'그것은 확실히 해결책이 아니지만 지금 호기심 ... – Shomz

답변

0

는 모든 변수를 설정 한 후

session_write_close() 

를 호출하려고합니다.

+0

아직 운이 없습니다. – Kevin

+0

스크립트가 브라우저에 헤더를 보내면 작동하는 것 같습니다.(http 헤더가 보내지는 메시지를 연상시키는 경우) 세션 데이터가 쿠키에 저장되고 브라우저가 서버에서 보낸 http 헤더를 통해서만 쿠키 데이터를 수신하기 때문에 이유가있을 수 있습니다. 그것의 단순한 아이디어, 그것이 진실인지 모르겠다;) –

+0

하지만 우리는 세션 변수가 설정된 후에 정보를 브라우저로 보내야한다. 프레임 워크에서 페이지 출력을 브라우저로 보내는보기를로드합니다. 그래서 이것이 너무 혼란 스럽습니다. 컨트롤러에 뭔가를 출력하면 모든 것이 작동합니다. 그러나 우리가 볼 때 변수가 결코 세션으로 넘겨지지 않는 (컨트롤러가 아닌) 뷰로부터 만 출력하면 .... – Kevin