CI 묻고 답하기

제목 CI3 세션쿠키 생성 문제
카테고리 CI 2, 3
글쓴이 정수리 작성시각 2024/05/31 15:39:28
댓글 : 3 추천 : 0 스크랩 : 0 조회수 : 1616   RSS

중복 로그인 방지 기능을 구현하기위해 포럼 게시글을 검색해보니 Ci세션을 db에 저장하는 방식으로 구현하시느것 같더라구요

기존에 파일로 관리하던 방식을 db테이블에 저장하는 방식으로 변경하였습니다.

$config['sess_driver'] = 'database';
$config['sess_cookie_name'] = 'ci_session';
$config['sess_expiration'] = 7200;
$config['sess_save_path'] = 'ci_sessions';
$config['sess_match_ip'] = FALSE;
$config['sess_time_to_update'] = 1800;
$config['sess_regenerate_destroy'] = FALSE;

테이블 생성 및 위처럼 설정한 후 사이트를 실행해서 네트워크쪽 쿠키를 확인해보니

ci_session이름으로 생성된 쿠키가 없었으며 db에 저장도 되지 않았습니다.

기존에 세션쿠키를 파일로 관리하는 방법으로 수정해서 테스트 했을때 에도

ci_session 쿠키가 생성되지 않았습니다.

 

포럼 검색 및 구글링을 해봐도 원인을 찾지 못해 system/libraries/Session/Session.php 파일 코드 중에서

class CI_Session {

	/**
	 * Userdata array
	 *
	 * Just a reference to $_SESSION, for BC purposes.
	 */
	public $userdata;

	protected $_driver = 'files';
	protected $_config;

	// ------------------------------------------------------------------------

	/**
	 * Class constructor
	 *
	 * @param	array	$params	Configuration parameters
	 * @return	void
	 */
	public function __construct(array $params = array())
	{
		// No sessions under CLI
		if (is_cli())
		{	
			
			log_message('debug', 'Session: Initialization under CLI aborted.');
			return;
		}
		elseif ((bool) ini_get('session.auto_start'))
		{
			// 이부분에서 걸리는것 확인
			log_message('error', 'Session: session.auto_start is enabled in php.ini. Aborting.');
			return;
		}

php.ini 파일에서 session.auto.start를 0으로 변경한 후 테스트 시

네트워크 창에서 ci_session이 생생되고 db에 저장되는것을 확인하였습니다.

위의 상황을 봤을 땐 php.ini에서 session.auto.start를 0으로 해줘야 ci_session이 생성된다것을 확인 할수 있었습니다.

메뉴얼에서 session.auto.start에 대한 내용이 없던데 이건 버그 인걸까요? 아니면 원래 ci3 사용시 auto.start를 0인 상태로 사용해야 하는건가요?

제가 사용하는 php7.2 ci3 버전 입니다.

 다음글 수정 파일이 복원 되는 문제 (8)
 이전글 서브디렉토리 설치 시 .htaccess 설정 방법 (4)

댓글

변종원(웅파) / 2024/05/31 16:32:38 / 추천 0

소스 어딘가에서 중복선언한거 일수도 있습니다. 수동으로 session start 한곳이 있는지 찾아보세요.

제 경우엔 php.ini 건드리지 않은 상태에서 db 세션을 사용했을때 질문하신 케이스가 나오지 않았습니다.

정수리 / 2024/05/31 16:37:27 / 추천 0

@웅파

답변감사합니다.

소스상에서는 session.start를 수동으로 사용한곳은 없습니다.

혹시나해서 개발툴에서 session.start 키워드 코드 전체 검색 시 

....\system\libraries\Session\Session.php:
  141  		}
  142  
  143: 		session_start();
  144  
  145  		// Is session ID auto-regeneration configured? (ignoring ajax requests)

1 match in 1 file

system/libraries/Session/Session.php에서만 발견되었습니다.

웅파님께서는 건드리시지 않았다면 session.auto.start가 기본값으로 0값이여서 그러시지 않을까요

darkninja / 2024/06/01 11:13:07 / 추천 0

https://aws.amazon.com/ko/what-is/machine-learning/

기계 학습은 어떻게 작동하나요?

기계 학습의 핵심 아이디어는 모든 입력 및 출력 데이터 조합 간의 기존 수학적 관계입니다. 기계 학습 모델은 이 관계를 미리 알지 못하지만 충분한 데이터 집합이 주어지면 추측할 수 있습니다. 이는 모든 기계 학습 알고리즘이 수정 가능한 수학 함수를 중심으로 구축되었음을 의미합니다. 기본 원리는 다음과 같이 이해할 수 있습니다.

  1. (2,10), (5,19) 및 (9,31) 입출력(i,o) 조합을 제공하여 알고리즘을 '훈련'합니다.
  2. 알고리즘은 입력과 출력의 관계를 o=3*i+4로 계산합니다.
  3. 그런 다음 입력 7을 제공하고 출력을 예측하도록 요청합니다. 자동으로 출력을 25로 결정할 수 있습니다.

이것이 기본적인 이해이지만 기계 학습은 모든 복잡한 데이터 요소가 해당 데이터를 처리할 수 있는 충분한 데이터와 컴퓨팅 파워가 있는 한 컴퓨터 시스템에 의해 수학적으로 연결될 수 있다는 원칙에 중점을 둡니다. 따라서 출력의 정확도는 주어진 입력의 크기와 직접적인 상관 관계가 있습니다.

 

이제 고난의 길로 들어설 시간입니다^^

한두 사람이 콩을 팥이라고 말하면 사실이 될수 없습니다

그러나 100명 1,000명이 말하고 사회의 구성원 절반정도까지 콩을 팥이라고 말한다면

콩은 이제부터 팥으로 불리게 될것입니다

 

눈으로 배우는 코딩은 실력이 늘지 않습니다

직접 쳐넣어서 결과를 눈으로 확인하는 과정을 수십번 수백번 반복해야

뇌에 겨우 각인될 정도로 나이든 사람의 뇌는 새로운 상황을 받아드리는 것을 주저합니다

 

지식은 넘쳐납니다

포럼 구글에서만 검색해도 다 공부 못할 정도로 사례는 충분히 있습니다

이제 그 중에서 옥석을 가릴수 있는 지혜가 필요합니다

사람도 기계학습처럼(기계학습보다 사람이 먼저 그러했지만...) 충분한 데이터와 경험이 (지식) 쌓여야

문제해결의 능력 지혜가 생깁니다.

 

이 글은 시간이 지나면 지울수도 있습니다.