> php教程 > PHP开发 > ThinkPHP의 세션 운영 방법 요약

ThinkPHP의 세션 운영 방법 요약

高洛峰
풀어 주다: 2016-12-22 10:38:38
원래의
1222명이 탐색했습니다.

이 글에서는 세션 시 ThinkPHP의 다양한 동작 방법을 자세히 설명하고 있습니다.

ThinkPHP 동작 세션 공식 문서는 다음과 같습니다.

start 세션 시작
pause 세션 일시 중지
세션 지우기
세션 삭제
세션 값 가져오기
getLocal 개인 세션 값 가져오기
세션 값 설정
setLocal 개인 세션 값 설정
이름 가져오기 또는 set session_name
is_set 세션 값 설정 여부
is_setLocal 비공개 세션 값 설정 여부
id session_id 가져오기 또는 설정
path session_save_path 가져오기 또는 설정
setExpire 세션 만료 시간 설정
setCookieDomain 설정 유효한 도메인 이름
setCallback은 Session 객체를 deserialize할 때 콜백 함수를 설정합니다.

가장 일반적으로 사용되는 작업 방법 예제 코드는 다음과 같습니다.

// 检测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');
로그인 후 복사

이러한 방식으로 전역 세션 작업은 충돌하지 않으며 일부 특수 상황에 사용될 수 있습니다.
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 Session 모드의 데이터베이스 연결은 프로젝트의 데이터베이스 구성 정보를 사용하여 연결됩니다. 데이터베이스 메서드 외에도 메모리 메서드, Memcache 메서드 등과 같은 다른 세션 저장 메커니즘 메서드를 추가할 수도 있습니다. 특정 메서드 정의는 session_set_save_handler 메서드를 사용하여 해당 필터만 추가하면 됩니다. Think.Util.Filter 아래의 FilterSessionDb. .class.php 파일 구현.

간단한 로그인 판단 생성
로그인 감지 후 Session 값이 비어 있거나 false가 되도록 Session 값을 할당

$_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'); //转到注册页面
}
로그인 후 복사

세션 작업 방법에 대한 더 많은 ThinkPHP 관련 기사를 보려면 PHP 중국어 사이트를 주목하세요!

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