질문 Q #8894
PHP session 사용방법?
정민스 2010-03-30 15:14:45
쿠키는 별로 사용하고 싶지가 않은데..

PHP session 을 사용할 방법은 없을까요?

session_start();
하고 세션 입력하는것 까지는 이상이 없는데..

echo $HTTP_SESSION_VARS[suid];

위와 같이 사용하려고 하면 $HTTP_SESSION_VARS 부분이 에러가 납니다..

어떻게 해야 되는 걸까요`?
답변 6
#1 변종원(웅파) 2010-03-30 15:35:03
상단 검색에서 session으로 검색해보세요. native session, phpsession 등 참고하실 자료가 나옵니다
#2 정민스 2010-03-30 17:57:39

phpsession 과 native session 둘다 사용해 보았는데,
loadlibrary 만 해도 에러가 납니다..

심지어는 autoload.php 에 넣어도 에러가 납니다.

Severity: Warning

Message: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /usr/local/apache/htdocs/system/application/libraries/phpsession.php:83)

Filename: libraries/phpsession.php

autoload 페이지에 넣었다는건 맨 위에 뭐가 들어갈 여지가 없다는건데..

더욱 이상한 것은 autoload.php 의 맨 위에 $autoload['libraries'] = array('phpsession');
를 넣으면 에러가 안나서, 되는건줄 알았더니,
아예 인식조차 못한 상태더군요...
$autoload['libraries'] = array('database'); 이게 가장 위에 있는 구문인데,
이것 위에 넣으면 인식이 안됩니다..

어떻게 해야 저 warning 이 나지 않을까요..

#3 kirrie 2010-03-30 22:12:10
에러가 친절하게 어디서 output이 나오는지 알려주고 있는데요. phpsession.php의 83번줄을 한번 살펴보세요.
#4 kirrie 2010-03-30 22:13:13
참, 그냥 php native session을 사용해도 쿠키는 씁니다. 원래 세션의 구현이란게 쿠키 + 서버 데이터가 한쌍으로 존재하는거거든요.
#5 정민스 2010-03-31 09:03:27

음.. phpsession.php 는 83라인이 끝이구요 -_-;;
웅파님이 말씀하신 공개 라이브러리를 받아서 사용하는건데..

 

<?php
	class Test extends Controller
	{
		function index()
		{
			$this->load->library('phpsession');
		}
	}
?>
그냥 위와 같이 선언하고 load 만 해도 에러가 납니다.
실제, phpsession 에서 에러나는 부분은

session_start();
$this->flashinit();

이라고 생각됩니다.. phpsession 이나 nativesession 사용하시는 분들중
저와 같은 에러가 발생하시는 분들 안계신가요~?
#6 정민스 2010-03-31 09:30:11
좀 찾아보니까.. 1.7.2 부터 발생하는 문제 같네요.

임시 해결방편으로.. Controller.php 에 _ci_initialize

부분에 session_start(); 를 넣고,

native_session 에 session_start() 를 지워서..

그냥 init 시에 session 이 시작되게 하니까.. 에러가 안나네요..

이렇게 해도 되는건지는 모르겠지만, 혹시 저와 비슷한 상황이시면 참고하세요~