CodeIgniter 설정 의 SESSION 용법 실례 분석
6063 단어 CodeIgniter배치 하 다.SESSION
Codeigniter 를 처음 사 용 했 을 때 도 SESSION 에 현혹 됐다 가 CI 가 가지 고 있 는 SESSION 을 다 시 는 사용 하지 않 았 다.SESSION 을 정리 할 필요 가 있 을 것 이다.CI 의 세 션 을 알 아 보기 위해 서 는 PHP 의 세 션 이 어떻게 작 동 하 는 지 먼저 말 해 보 세 요.HTTP 프로 토 콜 자체 가 무 상태 이기 때문에 특정한 사용자 의 방문 상태 정 보 를 보존 할 때 클 라 이언 트 가 서버 에 전송 하 는 유일한 표지 가 있어 야 한다.이 유일한 표 지 는 바로 SESSION ID 로 클 라 이언 트 의 COOKIE 에 저장 한 다음 에 서버 는 이 표지 에 따라 저 장 된 사용자 상태 정 보 를 읽 고 세 션 상 태 를 저장 하 는 목적 을 달성 해 야 한다.PHP 에서 세 션 을 시작 하려 면 다음 문장 을 실행 해 야 합 니 다.
session_start();
1.클 라 이언 트 가 요청 할 때마다 HTTP 헤더 에서 서버 에 보 내 는 정보 가 있 습 니 다.사용자 의 첫 번 째 방문 을 예 로 들 면:Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Host:s.local
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
2.서버 에서 요청 처 리 를 받 은 후 클 라 이언 트 에 게 되 돌려 주 고 HTTP Response 에 COOKIE 요청 을 추가 하여 브 라 우 저 에 COOKIE 를 설정 해 야 한다 고 알려 줍 니 다.COOKIE 이름 은 PHPSESSID 이 고 값 은 r887k5n4scg32d4ba34huuhmq 7 입 니 다.예 를 들 어:Response Headers
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:Keep-Alive
Content-Length:0
Content-Type:text/html
Date:Sun, 08 Dec 2013 12:56:56 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=5, max=100
Pragma:no-cache
Server:Apache/2.2.11 (Win32) PHP/5.4.7
Set-Cookie:PHPSESSID=r887k5n4scg32d4ba34huuhmq7; path=/
X-Powered-By:PHP/5.4.7
3.클 라 이언 트 가 이 사이트 의 페이지 를 다시 방문 할 때 브 라 우 저 는 이 COOKIE 를 서버 에 보 냅 니 다.서버 는 COOKIE 의 값 에 따라 서버 에 SESSION 이 저 장 된 파일 을 읽 고 세 션 정 보 를 받 습 니 다.예 를 들 어:Request Headers
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:zh-CN,zh;q=0.8
Cache-Control:max-age=0
Connection:keep-alive
Cookie:PHPSESSID=r887k5n4scg32d4ba34huuhmq7
Host:s.local
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63
세 션 상 태 를 저장 하 는 목적 을 달성 합 니 다.하지만 사용자 A 가 로그 인 한 SESSION ID 를 가 져 오 면 어떻게 되 는 지도 주의해 야 한다.위의 논리 에 따 르 면 요청 과정 에서 가 져 온 SESSION ID 를 서버 에 함께 보 내 면 서버 는 SESSION ID 에 따라 파일 을 읽 고 파일 내용 이 존재 하 는 것 을 발견 하여 사용 자 를 A 사용자,즉 A 사용자 의 사용자 상 태 를 가 져 와 민감 한 조작 을 할 수 있다.그래서 세 션 유효기간 내 에 SESSION ID 를 얻 으 면 사용자 의 권한 을 얻 을 수 있 습 니 다.이것 은 비교적 위험한 것 입 니 다.로 컬 관리 시스템 의 경우 chrome 로그 인 을 통 해 클 라 이언 트 COOKIE 를 볼 수 있 습 니 다.아래 그림 과 같 습 니 다.만약 어떤 수단 을 통 해 SESSION ID 를 얻 었 다 면 같은 COOKIE 를 보 내 는 것 을 모 의 하면 로그 인 을 할 수 있 습 니 다.FireFox 에 COOKIE 를 추가 할 수 있 습 니 다.Firebug 를 열 면 Cookies 에 새 쿠키 가 생 깁 니 다.확인 후 페이지 를 새로 고치 면 관리 시스템 에 로그 인 할 수 있 습 니 다.다음 그림:
일반적인 상황 에서 js 를 통 해 쿠키 를 얻 을 수 있 기 때문에 데이터 전시 가 실 행 될 때 전 의 를 주의해 야 합 니 다.다음은 CI 의 세 션 을 살 펴 보 겠 습 니 다.설정 파일 에 Session 설정 과 관련 된 인자 가 몇 개 있 습 니 다.Session 의 사용 에 영향 을 줍 니 다.다음 과 같 습 니 다.
//session cookie
$config['sess_cookie_name'] = 'ci_session';
//session
$config['sess_expiration'] = 7200;
// session
$config['sess_expire_on_close'] = FALSE;
//SESSION COOKIE
$config['sess_encrypt_cookie'] = FALSE;
//
$config['sess_use_database'] = FALSE;
// ,
$config['sess_table_name'] = 'ci_sessions';
// IP
$config['sess_match_ip'] = FALSE;
// UserAgent
$config['sess_match_useragent'] = TRUE;
//
$config['sess_time_to_update'] = 300;
CI 가 자체 적 으로 가지 고 있 는 SESSION 은 서버 파일 에 저장 되 지 않 고 모든 정 보 는 클 라 이언 트 COOKIE 에 저 장 됩 니 다.$this->load->library('session')를 호출 할 때;COOKIE 를 설정 하 는 세 션 을 시작 합 니 다.COOKIE 의 내용 은 다음 과 같 습 니 다.
Array
(
[session_id] => f05138a9513e4928cb0a57672cfe3b53
[ip_address] => 127.0.0.1
[user_agent] => Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.63 Safari/537.36
[last_activity] => 1386569398
[user_data] =>
)
클 라 이언 트 가 요청 할 때 이 정 보 를 HTTP 헤드 에서 서버 에 전송 하고 서버 는 HTTP 헤드 에서 SESSION 정 보 를 읽 습 니 다.똑 같이 세 션 을 실현 할 수 있 지만 이 방식 은 불확실 한 요소 가 많 습 니 다.소스 코드 에 따라 몇 가지 말씀 드 리 겠 습 니 다.1.로그 파일 에 나타 나 면:The session cookie data did not match what was expected.이것 은 가능 한 해 킹 시도 가 될 수 있 습 니 다.두 가지 문 제 를 설명 합 니 다:a.sessencrypt_쿠키 는 false 입 니 다.SESSION 은 COOKIE 에 암호 화 되 어 저장 되 지 않 았 습 니 다.b.COOKIE 를 읽 은 후 검사 에 실 패 했 습 니 다.복호화,파라미터 처리 와 관련 된 경우 일치 하지 않 는 경우 가 발생 하기 쉬 우 며,통과 하지 않 으 면 SESSION 을 비 웁 니 다.
2、만약 sessmatch_ip 는 true 입 니 다.클 라 이언 트 IP 가 변 할 때 SESSION 은 검사 가 통과 되 지 않 아 SESSION 을 비 웁 니 다.
3、sess_match_useragent 는 기본적으로 true 입 니 다.클 라 이언 트 UserAgent 가 변 할 때 검사 가 통과 되 지 않 고 SESION 을 비 웁 니 다.간단 한 예 로 IE 브 라 우 저 를 통 해 접근 합 니 다.다른 IE 모드 로 전환 하면 Agent 가 다 르 기 때문에 검사 가 통과 되 지 않 고 SESSION 을 비 웁 니 다.
위의 어떤 상황 이 발생 하면 SESSION 이 비 워 져 로그 인 에 성공 하지 못 하거나 로그 인 페이지 로 넘 어 가 는 경 우 를 볼 수 있 습 니 다.암호 화 되 지 않 고 IP,UserAgent 를 검사 하지 않 는 다 면?COOKIE 는 클 라 이언 트 에 저장 되 어 있 기 때문에 HTTP 요청 과 함께 서버 에 보 내야 합 니 다.너무 많은 COOKIE 가 속도 에 영향 을 주 고 일부 그림 등 자원 에 있어 대역 폭 을 낭비 할 수 있 습 니 다.2 차 COOKIE 는 4K 데이터 만 저장 할 수 있 고 암호 화 처리 후 더 작 게 저장 할 수 있다.
여러 가지 불 확정 요소 가 각종 이상 한 문 제 를 일 으 킬 것 이 니 너무 많은 갈등 을 피하 고 다른 방식 으로 과감하게 바 꾸 자.
CodeIgniter 프레임 워 크 와 관련 된 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있 습 니 다.
본 고 에서 말 한 것 이 여러분 이 CodeIgniter 프레임 워 크 를 바탕 으로 하 는 PHP 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
jquery의 $.post를 사용하여 비동기 통신 수행 (프레임 워크 : codeigniter)messages_test.php ・ 텍스트를 2개 준비시켜, 각각에 id를 붙입니다. ・button의 type은 이번 비동기 통신이기 때문에, submit는 아니고 button를 사용. (submit라고 화면 천이해...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.