| 제목 | 세션,상수 사용관련해서 조언 구합니다. | ||
|---|---|---|---|
| 카테고리 | CI 2, 3 | ||
| 글쓴이 | 반타 | 작성시각 | 2018/03/21 10:43:28 | 
| 
                         | 
                |||
| 
                         현재 ci 컨트롤러에서 세션,상수를 만들고 있습니다. ci controller, views 단에서는 생성한 세션,상수등을 잘 불러올수 있는데 ci외부페이지? 표현이 맞으려나 모르겠으나 예를들어 www/test/test.php 에서 ci controller 에서 생성한 세션이나 상수를 불러오질 못하고 있습니다. (ci와 외부페이지 documentRoot 는 동일합니다. ) 
 test.php 에선 <?PHP session_start(); echo $_SESSION['test']; //세션 echo TEST; // 상수 ?> 이런식으로 불러오고 있구요. 사정상 외부페이지에서 ci에서 생성한 세션이나 상수를 불러와야하는데 읽어오질 못하고 있네요. 조언 부탁드립니다.  | 
                |||
| 다음글 | 외부에서 curl 로 보네는 데이터를 받고 싶습니다. (4) | ||
| 이전글 | 404 에러 이유 (2) | ||
| 
                             
                                빛그림
                                /
                                2018/03/21 10:50:08 /
                                추천
                                0
                             
                             | 
                    
| 
                             
                                반타
                                /
                                2018/03/21 10:54:18 /
                                추천
                                0
                             
                            @빛그림 네 현재 ci 컨트롤러,뷰에서는 세션불러오는데 전혀 문제가 없습니다. ci외부페이지에서 불러오지 못해서 문제입니다..  | 
                    
| 
                             
                                kaido
                                /
                                2018/03/21 11:48:32 /
                                추천
                                0
                             
                            세션은 공유가 안됩니다. CI3 이하에서는 네이티브 세션을 쓰지 않기 때문에 공유가 안됩니다. CI4부터 네이티브 세션이 사용 가능 합니다. 상수는 define 을 사용하기에 큰 문제가 없을거라 생각 했습니다만... CI의 로더를 거치지 않는다면 당연히 사용이 안됩니다. CI의 컨트롤에서 벗어난 부분에서 CI를 사용 하겠다는 말과 같습니다. /test/test.php 이거는 CI하고 전혀 상관없는 일반 PHP 파일 만드신것 입니다. 
  | 
                    
| 
                             
                                반타
                                /
                                2018/03/21 11:56:20 /
                                추천
                                0
                             
                            @kaido 네 맞습니다. 일반 php파일입니다. 혹시나 방법이 있나 싶어서 조언구한거였습니다. 현재는 쿠키로 대체중이긴합니다.  | 
                    
| 
                             
                                빛그림
                                /
                                2018/03/21 12:01:50 /
                                추천
                                0
                             
                            아... 그러면 PHP의 네이티브 세션을 이용하실수 있습니다. 그때 참고한 내용을 지금 다시 찾기는 힘들지만 https://github.com/bcit-ci/CodeIgniter/wiki/Native-session 이걸 보시면 될듯 하네요. 저도 2년전쯤 네이티브 세션이 필요해서 사용했던 적이 있었네요...  | 
                    
| 
                             
                                한대승(불의회상)
                                /
                                2018/03/21 12:35:30 /
                                추천
                                0
                             
                            ci 3.0 부터는 기본적으로 php 네이티브 세션을 사용 합니다. 아래 처럼 테스트 해보세요. 
// ci controller
class Test extends CI_Controller{
  public function tsession() {
    $_SESSION['test'] = 1234;
  }
}
// 일반 php
echo $_SESSION['test'];
  | 
                    
| 
                             
                                이제다시
                                /
                                2018/03/21 12:44:09 /
                                추천
                                0
                             
                            도메인이 같을 경우에 session_id 가 달라서 발생하는 문제입니다. 
 CI 의 경우 session_id 를 sess_cookie_name 로 자체 생성하여 세션을 사용하기 때문에 
 일반적인 PHP는 PHPSESSID 를 이용하여 session 파일에 접근하는데 session_id 를 ci 에서 생성한 ID 로 변경하신 후에 사용하시면 $_SESSION 변수에 접근가능합니다.  | 
                    
| 
                             
                                반타
                                /
                                2018/03/21 12:52:05 /
                                추천
                                0
                             
                            @빛그림 / 한대승 / 이제다시 많은 분들 답변 정말 감사합니다. 참조하여 작업해보겠습니다.  | 
                    
CI스럽게...
컨트롤러에서 세션 라이브러리로 세션을 사용하시고, 뷰에서 세션을 가져오시면 편합니다.