ThinkPHP 세션 작업 방법 요약_php 예제

WBOY
풀어 주다: 2016-05-16 20:39:54
원래의
922명이 탐색했습니다.

이 글에서는 ThinkPHP의 다양한 세션 운영 방법을 설명하고 있습니다.

ThinkPHP의 운영 세션 공식 문서는 다음과 같습니다.

시작 세션 시작
일시 정지 세션 일시 정지
클리어 세션 클리어
파괴 세션 파괴
get 세션 값 가져오기
getLocal은 비공개 세션 값을 가져옵니다
set 세션 값 설정
setLocal은 비공개 세션 값을 설정합니다
name은 session_name을 가져오거나 설정합니다
is_set 세션 값 설정 여부
is_setLocal 비공개 세션 값 설정 여부
id는 session_id를 가져오거나 설정합니다
경로는 session_save_path를 가져오거나 설정합니다
setExpire는 세션 만료 시간을 설정합니다
setCookieDomain은 유효한 도메인 이름을 설정합니다
setCallback은 세션 객체가 역직렬화될 때 콜백 함수를 설정합니다

가장 많이 사용되는 연산방식의 샘플코드는 다음과 같습니다.

// 检测Session变量是否存在
Session::is_set('name');
// 给Session变 量赋值
Session::set('name','value');
// 获取Session变量
Session::get('name');

로그인 후 복사

Session과 관련된 구성 매개변수 코드는 다음과 같습니다.

'SESSION_NAME'=>'ThinkID',        // 默认Session_name
'SESSION_PATH'=>'',            // 采用默认的Session save path
'SESSION_TYPE'=>'File',            // 默认Session类型 支持 DB 和 File 
'SESSION_EXPIRE'=>'300000',        // 默认Session有效期
'SESSION_TABLE'=>'think_session',    // 数据库Session方式表名
'SESSION_CALLBACK'=>'',            // 反序列化对象的回调方法

로그인 후 복사

SESSION_NAME 매개변수에 유의해야 합니다. 서로 다른 프로젝트 간에 세션 값을 공유하지 않으려면 다른 값을 설정하고, 그렇지 않으면 동일한 기본값을 유지하세요.
동일한 SESSION_NAME 값을 설정했는데 해당 프로젝트를 기반으로 비공개 세션 공간을 생성하고 싶은 경우 어떻게 해야 하나요? ThinkPHP는 프로젝트를 세션 공간으로 사용하여 개인 세션 작업도 지원합니다. 이전의 일반적인 작업을 예로 들어 다음과 같이 변경합니다.

// 检测Session变量是否存在(当前项目有效)
Session::is_setLocal('name');
// 给Session变 量赋值(当前项目有效)
Session::setLocal('name','value');
// 获取Session变量(当前 项目有效)
Session::getLocal('name');

로그인 후 복사

이렇게 하면 전역 Session 작업과 충돌하지 않으며 일부 특수한 상황에서 사용할 수 있습니다.
ThinkPHP는 데이터베이스 모드에서 세션 작업을 지원합니다. SESSION_TYPE의 값을 DB로 설정하면 됩니다. 데이터베이스 모드를 사용하는 경우 SESSION_TABLE의 값을 설정하고 다음 DDL을 데이터베이스로 가져오십시오(예: MySQL).

CREATE TABLE `think_session` (
`id` int(11) unsigned NOT NULL auto_increment,
`session_id` varchar(255) NOT NULL,
`session_expires` int(11) NOT NULL,
`session_data` blob,
PRIMARY KEY(`id`)
)

로그인 후 복사

Db 세션 데이터베이스 연결은 연결을 위해 프로젝트의 데이터베이스 구성 정보를 사용합니다. 데이터베이스 메서드 외에도 메모리 메서드, Memcache 메서드 등과 같은 다른 세션 저장 메커니즘 메서드를 추가할 수도 있습니다. 특정 메서드 정의의 경우 session_set_save_handler 메서드를 사용하여 해당 필터만 추가하면 됩니다. 아래 FilterSessionDb.class.php 파일의 Think.Util.Filter 구현을 참조하세요.

간단한 로그인 판단을 만들었습니다
로그인 감지 후 세션 값이 비어 있지 않거나 false가 되도록 세션 값을 할당합니다

$_SESSION[C('USER_AUTH_KEY')] = $logInFind['id'] ;

로그인 후 복사

여기서 [C('USER_AUTH_KEY')]는 ThinkPHP에 내장된 메소드 및 함수 클래스입니다. config.php 파일이 구성되지 않은 경우 기본값은 비어 있습니다
$logInFind['id']에서 가져온 계정 값을 지정하세요. 기본적으로 페이지 세션이 닫히면 세션이 자동으로 삭제됩니다.
다른 페이지를 판단하려면 다음 형식을 사용하세요

if(!isset($_SESSION[C('USER_AUTH_KEY')])) { //isset 是检测变量是否赋值!
   $this->redirect('Login','Login'); //转到注册页面
}

로그인 후 복사
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿